<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 4.2.1">
  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/dute_favicon_32x32.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/dute_favicon_16x16.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">
  <link rel="manifest" href="/images/manifest.json">
  <meta name="msapplication-config" content="/images/browserconfig.xml">
  <meta http-equiv="Cache-Control" content="no-transform">
  <meta http-equiv="Cache-Control" content="no-siteapp">
  <meta name="google-site-verification" content="mpI5dkydstZXl6UcDCppqktXK0bbvqdZ6LkZ3KNk4Iw">
  <meta name="baidu-site-verification" content="code-a1LksZX2Ds">

<link rel="stylesheet" href="/css/main.css">


<link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css">
  <link rel="stylesheet" href="//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.css">

<script id="hexo-configurations">
    var NexT = window.NexT || {};
    var CONFIG = {"hostname":"whitestore.top","root":"/","scheme":"Gemini","version":"7.8.0","exturl":true,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":true,"show_result":false,"style":null},"back2top":{"enable":true,"sidebar":true,"scrollpercent":true},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":true,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"path":"search.xml"};
  </script>

  <meta name="description" content="鸟哥的私房菜笔记">
<meta property="og:type" content="article">
<meta property="og:title" content="LINUX鸟哥的私房菜">
<meta property="og:url" content="https://whitestore.top/2020/07/26/unix1/index.html">
<meta property="og:site_name" content="爱看书的阿东">
<meta property="og:description" content="鸟哥的私房菜笔记">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2020-07-26T08:56:58.000Z">
<meta property="article:modified_time" content="2023-07-16T06:28:09.251Z">
<meta property="article:author" content="阿东">
<meta property="article:tag" content="鸟哥的私房菜笔记">
<meta name="twitter:card" content="summary">

<link rel="canonical" href="https://whitestore.top/2020/07/26/unix1/">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome : false,
    isPost : true,
    lang   : 'zh-CN'
  };
</script>

  <title>LINUX鸟哥的私房菜 | 爱看书的阿东</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

<link rel="alternate" href="/atom.xml" title="爱看书的阿东" type="application/atom+xml">
</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container use-motion">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="切换导航栏">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/" class="brand" rel="start">
      <span class="logo-line-before"><i></i></span>
      <h1 class="site-title">爱看书的阿东</h1>
      <span class="logo-line-after"><i></i></span>
    </a>
      <p class="site-subtitle" itemprop="description">赐他一块白色石头，石头上写着新名</p>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
        <i class="fa fa-search fa-fw fa-lg"></i>
    </div>
  </div>
</div>




<nav class="site-nav">
  <ul id="menu" class="menu">
        <li class="menu-item menu-item-home">

    <a href="/" rel="section"><i class="fa fa-fw fa-home"></i>首页</a>

  </li>
        <li class="menu-item menu-item-tags">

    <a href="/tags/" rel="section"><i class="fa fa-fw fa-tags"></i>标签</a>

  </li>
        <li class="menu-item menu-item-categories">

    <a href="/categories/" rel="section"><i class="fa fa-fw fa-th"></i>分类</a>

  </li>
        <li class="menu-item menu-item-archives">

    <a href="/archives/" rel="section"><i class="fa fa-fw fa-archive"></i>归档</a>

  </li>
        <li class="menu-item menu-item-sitemap">

    <a href="/sitemap.xml" rel="section"><i class="fa fa-fw fa-sitemap"></i>站点地图</a>

  </li>
      <li class="menu-item menu-item-search">
        <a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
        </a>
      </li>
  </ul>
</nav>



  <div class="search-pop-overlay">
    <div class="popup search-popup">
        <div class="search-header">
  <span class="search-icon">
    <i class="fa fa-search"></i>
  </span>
  <div class="search-input-container">
    <input autocomplete="off" autocapitalize="off"
           placeholder="搜索..." spellcheck="false"
           type="search" class="search-input">
  </div>
  <span class="popup-btn-close">
    <i class="fa fa-times-circle"></i>
  </span>
</div>
<div id="search-result">
  <div id="no-result">
    <i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>
  </div>
</div>

    </div>
  </div>

</div>
    </header>

    

  <span class="exturl github-corner" data-url="aHR0cHM6Ly9naXRodWIuY29tL2xhenlUaW1lcw==" title="Follow me on GitHub" aria-label="Follow me on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></span>


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content post posts-expand">
            

    
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://whitestore.top/2020/07/26/unix1/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="阿东">
      <meta itemprop="description" content="随遇而安">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="爱看书的阿东">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          LINUX鸟哥的私房菜
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2020-07-26 16:56:58" itemprop="dateCreated datePublished" datetime="2020-07-26T16:56:58+08:00">2020-07-26</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="fa fa-calendar-check-o"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2023-07-16 14:28:09" itemprop="dateModified" datetime="2023-07-16T14:28:09+08:00">2023-07-16</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/" itemprop="url" rel="index"><span itemprop="name">读书笔记</span></a>
                </span>
            </span>

          
            <span class="post-meta-item" title="阅读次数" id="busuanzi_container_page_pv" style="display: none;">
              <span class="post-meta-item-icon">
                <i class="fa fa-eye"></i>
              </span>
              <span class="post-meta-item-text">阅读次数：</span>
              <span id="busuanzi_value_page_pv"></span>
            </span>
  
  <span class="post-meta-item">
    
      <span class="post-meta-item-icon">
        <i class="fa fa-comment-o"></i>
      </span>
      <span class="post-meta-item-text">Valine：</span>
    
    <a title="valine" href="/2020/07/26/unix1/#valine-comments" itemprop="discussionUrl">
      <span class="post-comments-count valine-comment-count" data-xid="/2020/07/26/unix1/" itemprop="commentCount"></span>
    </a>
  </span>
  
  <br>
            <span class="post-meta-item" title="本文字数">
              <span class="post-meta-item-icon">
                <i class="fa fa-file-word-o"></i>
              </span>
                <span class="post-meta-item-text">本文字数：</span>
              <span>36k</span>
            </span>
            <span class="post-meta-item" title="阅读时长">
              <span class="post-meta-item-icon">
                <i class="fa fa-clock-o"></i>
              </span>
                <span class="post-meta-item-text">阅读时长 &asymp;</span>
              <span>33 分钟</span>
            </span>
            <div class="post-description">鸟哥的私房菜笔记</div>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
        <h1 id="《Linux-鸟哥的私房菜》部分笔记："><a href="#《Linux-鸟哥的私房菜》部分笔记：" class="headerlink" title="《Linux 鸟哥的私房菜》部分笔记："></a>《Linux 鸟哥的私房菜》部分笔记：</h1><h2 id="第一章：计算机概论"><a href="#第一章：计算机概论" class="headerlink" title="第一章：计算机概论"></a>第一章：计算机概论</h2><ul>
<li>CPU<ul>
<li>基本结构<ul>
<li>控制单元</li>
<li>存储单元</li>
<li>内存</li>
<li>输入单元</li>
<li>输出单元</li>
</ul>
</li>
<li>内存</li>
<li>指令集<ul>
<li>精简指令集 RISC<ul>
<li>SPARC</li>
<li>PowerPC</li>
<li>Cell</li>
</ul>
</li>
<li>复杂指令集 CISC<ul>
<li>AMD</li>
<li>Inter</li>
<li>VIA</li>
<li>X86 的起源</li>
</ul>
</li>
</ul>
</li>
<li>Bit： CPU一次读取的最大量</li>
</ul>
</li>
<li>人体和电脑设备的比喻</li>
<li>电脑分类<ul>
<li>超级计算机</li>
<li>大型计算机</li>
<li>迷你计算机</li>
<li>工作站</li>
</ul>
</li>
<li>电脑常用的计量单位<ul>
<li>Mbit</li>
<li>Ghz</li>
</ul>
</li>
<li>CPU的工作频率：外频与倍频<ul>
<li>外频：CPU与外部组件数据传输的速度</li>
<li>倍频：CPU内部加速工作性能的倍数</li>
<li>超频</li>
</ul>
</li>
<li>内存<ul>
<li>多通道设计</li>
<li>DDR</li>
<li>DRAM 和 SRAM</li>
<li>二级缓存：CPU内部的内存缓存</li>
<li>ROM<ul>
<li>BIOS</li>
<li>现在已写入到闪存或者硬件中</li>
<li>固件</li>
</ul>
</li>
</ul>
</li>
<li>显卡<ul>
<li>主要的连接接口<ul>
<li>D-Sub</li>
<li>DVI</li>
<li>HDMI</li>
<li>DisplayPort</li>
</ul>
</li>
</ul>
</li>
<li>硬盘：<ul>
<li>组成：<ul>
<li>碟片</li>
<li>磁头</li>
<li>主轴马达</li>
<li>机器手臂</li>
</ul>
</li>
<li>最小单元：扇区</li>
<li>传输接口：<ul>
<li>SATA</li>
<li>USB</li>
<li>SAS</li>
</ul>
</li>
<li>固态硬盘</li>
</ul>
</li>
<li>使用须知</li>
<li>扩展接口</li>
<li>主板<ul>
<li>设备IO地址和IRQ中断请求</li>
<li>连接外置设备</li>
</ul>
</li>
<li>主机电源</li>
<li>数据的表示方式<ul>
<li>数字系统</li>
<li>字符编码系统</li>
<li>操作系统<ul>
<li>概念<ul>
<li>只管理硬件资源</li>
<li>内核参考硬件写成</li>
<li>应用程序参考操作系统</li>
</ul>
</li>
<li>内核功能<ul>
<li>系统调用</li>
<li>进程管理</li>
<li>内存管理</li>
<li>文件系统管理</li>
<li>设备驱动</li>
</ul>
</li>
<li>注意点：</li>
</ul>
</li>
<li>重点回顾<ul>
<li>计算机定义</li>
<li>计算机五大单元</li>
<li>CPU的作用</li>
<li>CPU频率，外频和倍频，以及超频</li>
<li>新CPU的主要变化</li>
<li>CPU处理数据</li>
<li>内存分类<ul>
<li>动态随机存取内存</li>
<li>静态随机存取内存</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<a id="more"></a>

<h2 id="第二章：Linux起源"><a href="#第二章：Linux起源" class="headerlink" title="第二章：Linux起源"></a>第二章：Linux起源</h2><ul>
<li>Unix的发展背景</li>
<li>GNU计划，开放源代码</li>
<li>Minix 的发展</li>
<li>Linux的雏形<ul>
<li>Minix不满足要求</li>
<li>学到的东西<ul>
<li>基础知识和技能</li>
<li>一点成功之后，勇于挑战</li>
<li>把“玩具”发扬光大</li>
</ul>
</li>
</ul>
</li>
<li>虚拟团队对于LInux的改进</li>
<li>Linux版本<ul>
<li>主次版本为奇数：开发中</li>
<li>主次版本为偶数：稳定版本</li>
<li>主线版本：长期维护<ul>
<li>判断是否为长期版本的办法<ul>
<li><code>uname -r</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>Linux发行版</li>
<li>Linux应用<ul>
<li>云端应用</li>
<li>虚拟化</li>
</ul>
</li>
<li>从头学习Linux<ul>
<li>选择一本好用的工具书<ul>
<li>推荐的网络书： NETMAN</li>
</ul>
</li>
<li>发生问题怎么处理</li>
<li>FAQ：<ul>
<li>/usr/share/doc</li>
<li><span class="exturl" data-url="aHR0cDovL3d3dy50bGRwLm9yZw==" title="http://www.tldp.org">http://www.tldp.org<i class="fa fa-external-link"></i></span></li>
</ul>
</li>
<li>必要掌握点：<ul>
<li>计算机概论与硬件相关知识</li>
<li>从Linux安装和命令学起</li>
<li>Linux操作系统的基本技能</li>
<li>学会VI编辑器</li>
<li>Shell与脚本学习</li>
<li>一定要会软件管理<ul>
<li>Tarball</li>
<li>RPM</li>
<li>DPKG</li>
<li>YUM</li>
<li>APT</li>
</ul>
</li>
<li>网络基础学习</li>
<li>网站搭建</li>
</ul>
</li>
<li>网络的书推荐<ul>
<li><span class="exturl" data-url="aHR0cDovL0h0dHA6Ly9saW51eC52YmlyZC5vcmc=" title="http://Http://linux.vbird.org">Http://linux.vbird.org<i class="fa fa-external-link"></i></span></li>
</ul>
</li>
<li>实践大于一切</li>
<li>习惯：<ul>
<li>有系统的设计文件目录</li>
<li>养成做记录的习惯</li>
<li>作为用户人迁就机器，作为开发，机器迁就人</li>
<li>会“偷”，“偷”了会改，改了会变，变则通</li>
</ul>
</li>
<li>兴趣</li>
<li>成就感</li>
<li>建立兴趣</li>
<li>协助回答问题</li>
<li>参与讨论</li>
<li>不同环境，解决办法很多，只要行得通就是好办法</li>
</ul>
</li>
</ul>
<h3 id="简答题："><a href="#简答题：" class="headerlink" title="简答题："></a>简答题：</h3><ol>
<li>你再主机上安装了一块网卡，但是开机之后，系统却无法使用，网卡是好的，可能哪里出问题，如何解决？</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">链接：https:&#x2F;&#x2F;www.nowcoder.com&#x2F;questionTerminal&#x2F;1dc7f18e85e04269b1a355b32692c8ba?orderByHotValue&#x3D;1&amp;page&#x3D;1&amp;onlyReference&#x3D;false</span><br><span class="line">来源：牛客网</span><br><span class="line"></span><br><span class="line">网卡是否启动，是否配置了开机自启。可以修改 &#x2F;etc&#x2F;sysconf&#x2F;network-sripts&#x2F;ifcfg-ethX，其中X是网卡号，</span><br><span class="line">DEVICE&#x3D;eth0                              #网卡对应的设备别名</span><br><span class="line">BOOTPROTO&#x3D;static                    #网卡获得ip地址的方式（默认为dhcp，表示自动获取）</span><br><span class="line">HWADDR&#x3D;00:07:E9:05:E8:B4    #网卡MAC地址（物理地址）</span><br><span class="line">IPADDR&#x3D;192.168.100.100          #IP地址</span><br><span class="line">NETMASK&#x3D;255.255.255.0          #子网掩码 </span><br><span class="line">ONBOOT&#x3D;yes                              #系统启动时是否激活此设备</span><br></pre></td></tr></table></figure>

<p>2.一个操作系统至少可以完整控制整个硬件，请问操作系统要控制哪些单元</p>
<blockquote>
<p>（1）运算单元，用来执行当前指令所规定的算术运算和逻辑运算，具有定点和浮点运算功能；（2）控制单元，指挥微处理器执行指令操作的功能； （3）寄存器组，用来暂存操作数，中间结果和处理结果，它构成了微处理器内部的小型存贮空间，其容量大小影响到微处理器的效率； （4）总线接口单元，提供微处理器与周围其它硬件的接口，有效地将微处理器的地址、数据和控制等信息通过总线和各相关部件接通； （5）输入/<span class="exturl" data-url="aHR0cHM6Ly93d3cuYmFpZHUuY29tL3M/d2Q96L6T5Ye65o6l5Y+jJnRuPVNFX1BjWmhpZGFvbndoY19uZ3BhZ21qeiZyc3ZfZGw9Z2hfcGNfemhpZGFv" title="https://www.baidu.com/s?wd=输出接口&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao">输出接口<i class="fa fa-external-link"></i></span>单元。</p>
</blockquote>
<ol>
<li>window上的游戏能不能到Linux去玩</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">不能，操作系统不一样</span><br></pre></td></tr></table></figure>

<ol>
<li>Unix 是谁写出来的？ GNU 计划是谁发起的？</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">GNU 是 GNU is Not Unix 的简写，是个无穷循环！ 另外，这个计划是由自由软件基金会 (Free Software Foundation, FSF) 所支</span><br><span class="line">持的！ 两者都是由 Stallman 先生所发起的！</span><br></pre></td></tr></table></figure>

<ol>
<li>何谓多人 ( Multi-user ) 多任务 ( Multitask )？</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">Multiuser 指的是 Linux 允许多人同时连上主机之外，每个用户皆有其各人的使用环境，并且可以同时使用系统的资源！</span><br><span class="line">Multitask 指的是多任务环境，在 Linux 系统下， CPU 与其他例如网络资源可以同时进行多项工作， Linux 最大的特色之一</span><br><span class="line">即在于其多任务时，资源分配较为平均</span><br></pre></td></tr></table></figure>

<ol>
<li>Linux 本身仅是一个核心与相关的核心工具而已，不过，他已经可以驱动所有的硬件， 所以，可以算是一 个很阳春的操作系统了。经过其他应用程序的开发之后，被整合成为 Linux distribitions。请问众多的 distributions 之间，有何异同？</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">相同：(1)同样使用 http:&#x2F;&#x2F;www.kernel.org 所释出的核心； (2)支持同样的标准，如 FHS、LSB 等； (3)使用几乎相同的自由软</span><br><span class="line">件 (例如 GNU 里面的 gcc&#x2F;glibc&#x2F;vi&#x2F;apache&#x2F;bind&#x2F;sendmail... )； (4)几乎相同的操作接口 (例如均使用 bash&#x2F;KDE&#x2F;GNOME 等等)。</span><br><span class="line">不同：使用的 kernel 与各软件的版本可能会不同；各开发商加入的应用工具不同，使用的套件管理模式不同(dpkg 与 RPM)</span><br></pre></td></tr></table></figure>

<ol>
<li>什么是 POSIX ?为何说 Linux 使用 POSIX 对于发展有很好的影响？</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">POSIX 是一种标准规范，主要针对在 Unix 操作系统上面跑的程序来进行规范。 若你的操作系统符合 POSIX ，则符合 POSIX</span><br><span class="line">的程序就可以在你的操作系统上面运作。 Linux 由于支持 POSIX ，因此很多 Unix 上的程序可以直接在 Linux 上运作， 因</span><br><span class="line">此程序的移植相当简易！也让大家容易转换平台，提升 Linux 的使用率。</span><br></pre></td></tr></table></figure>

<h2 id="第三章：主观规划与磁盘分区"><a href="#第三章：主观规划与磁盘分区" class="headerlink" title="第三章：主观规划与磁盘分区"></a>第三章：主观规划与磁盘分区</h2><ul>
<li>Linux和硬件的搭配<ul>
<li>认识计算机硬件<ul>
<li>注意硬件的性价比</li>
<li>注意电费</li>
</ul>
</li>
<li>选择Linux搭配的主机<ul>
<li>CPU<ul>
<li>i3最低要求</li>
</ul>
</li>
<li>内存<ul>
<li>越大越好</li>
</ul>
</li>
<li>硬盘：<ul>
<li>通常：20G</li>
<li>高级：磁盘阵列</li>
</ul>
</li>
<li>显卡<ul>
<li>32M</li>
</ul>
</li>
<li>网卡：<ul>
<li>网络IO频繁要选好网卡</li>
</ul>
</li>
</ul>
</li>
<li>各硬件设备在Linux的文件名</li>
</ul>
</li>
<li>磁盘分区<ul>
<li>磁盘连接方式和设备文件名的关系<ul>
<li>正常：/dev/sd[a-p]</li>
<li>虚拟化环境：/dev/vd[a-p]</li>
<li>决定关系：Linux的检测磁盘顺序</li>
</ul>
</li>
</ul>
</li>
<li>分区几点：<ul>
<li>MBR</li>
<li><h2 id="四个主分区和一个扩展分区"><a href="#四个主分区和一个扩展分区" class="headerlink" title="四个主分区和一个扩展分区"></a>四个主分区和一个扩展分区</h2></li>
<li>MBR 与 GPT 磁盘分区表<ul>
<li>MBR<ul>
<li>512字节大小<ul>
<li>主引导记录：引导程序的地方，446字节</li>
<li>分区表：记录整个硬盘分区状态，64字节<ul>
<li>最多只能有四组记录</li>
<li>记录该区开始和结束柱面号码</li>
<li>注意点<ul>
<li>所谓分区仅仅是对于64字节的分区表设置</li>
<li>磁盘默认只能写入四组分区信息</li>
<li>主要分区和扩展分区</li>
<li>最小单位为柱面</li>
</ul>
</li>
<li>写入磁盘必须参考分区表才能操作</li>
</ul>
</li>
</ul>
</li>
<li>数据安全性</li>
<li>系统性能</li>
</ul>
</li>
<li>GPT<ul>
<li>出现原因<ul>
<li>MBR无法操作2.2T以上磁盘</li>
<li>MBR只有一个区块，破会后无法恢复</li>
<li>MBR存放引导程序只有446字节，无法存储较多程序代码</li>
</ul>
</li>
<li>分区<ul>
<li>34个LBA区块记录分区</li>
<li>LBA0（MBR兼容区块）<ul>
<li>存放引导信息</li>
</ul>
</li>
<li>LBA1 （GPT表头记录）<ul>
<li>分区表的本身位置和大小</li>
<li><strong>后面34个备份GPT分区</strong></li>
</ul>
</li>
<li>LBA2-33(实际分区信息记录)<ul>
<li>4 * 32 =128 组</li>
<li>【2^64 * 512 = 2^63 * 1K字节 = 2^33 * TB = 8ZB】 1ZB = 2^30TB</li>
</ul>
</li>
<li>现在的内核使用特殊方式没有所谓的主分区，扩展分区和逻辑分区</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>启动程序BIOS和UEFI启动检测程序<ul>
<li>BIOS<ul>
<li>系统启动的第一个程序</li>
<li>直接写在硬件上的一个程序</li>
<li>启动过程：<ul>
<li>BIOS:启动固件，认识第一个可启动设备</li>
<li>MBR：第一个可启动的设备第一个扇区的主引导记录块，内部引导代码</li>
<li>启动引导程序（boot loader）：可读内核文件的软件</li>
<li>内核文件，开始启动系统</li>
</ul>
</li>
<li>Boot Loader 作用<ul>
<li>提供不同选项，多重引导</li>
<li>加载内核文件</li>
<li>启动管理功能转交给其他引导程序<ul>
<li><strong>启动引导程序可以装在分个分区的启动扇区</strong></li>
</ul>
</li>
</ul>
</li>
<li>多重引导<ul>
<li>每个分区都有自己启动扇区</li>
<li>第一以及第二扇区</li>
<li>实际可启动的内核文件放到各个分区</li>
<li>功能：认识自己分区的可启动内核文件，其他引导程序</li>
<li>直接或者间接管理权给另一个启动引导管理程序</li>
</ul>
</li>
</ul>
</li>
<li>UEFI 搭配GPT启动流程<ul>
<li>某些时刻可能需要关闭UEFI 的 secure boot 功能</li>
<li>双系统清务必先安装windows</li>
</ul>
</li>
</ul>
</li>
<li>Linux 安装模式分区选择（极其重要）<ul>
<li>目录树结构<ul>
<li>根目录</li>
</ul>
</li>
<li>文件系统与目录树挂载<ul>
<li>什么是挂载？<ul>
<li>利用目录成为进入点，磁盘分区放置到目录下面</li>
<li>进入该目录就可以读取该分区</li>
</ul>
</li>
<li>判断文件在哪个分区<ul>
<li>哪个“进入点”先被查到，被查到的就是进入点</li>
</ul>
</li>
</ul>
</li>
<li>规划磁盘分区<ul>
<li>自定义安装<ul>
<li>初学： “/” 以及 “swap” 分区即可</li>
<li>预备一个备用的剩余磁盘容量</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>安装Linux之前的规划<ul>
<li>选择适当发行版<ul>
<li>镜像站</li>
</ul>
</li>
</ul>
</li>
<li>主机服务和硬件的关系<ul>
<li>window和Linux共存</li>
<li>NAT</li>
<li>SAMBA</li>
<li>Mail</li>
<li>Web</li>
<li>DHCP</li>
<li>FTP</li>
</ul>
</li>
<li>主机硬盘规划<ul>
<li>主机硬件出问题，文件能否安全保存</li>
<li>最简单分区办法<ul>
<li>如上的新人办法</li>
<li>很不靠谱</li>
</ul>
</li>
<li>稍微麻烦一些<ul>
<li>比较符合读写容量大而且读写频繁的场景分区办法<ul>
<li>/boot</li>
<li>/</li>
<li>/home</li>
<li>/var</li>
<li>swap</li>
</ul>
</li>
<li>注意服务种类</li>
</ul>
</li>
</ul>
</li>
<li>两个案例<ul>
<li>家用小型Linux服务器，IP共享和文件共享中心</li>
<li>Linux的PC集群</li>
</ul>
</li>
</ul>
<p>第三章：安装CenterOs7</p>
<p>本章基本全靠实操，务必多操作几遍</p>
<ul>
<li>练习规划<ul>
<li>配置<ul>
<li>CPU： I5以上</li>
<li>内存：最少提供1.2G以上内存</li>
<li>硬盘：40GB Virtio 接口</li>
<li>网卡：Bridge 桥接对外网卡</li>
<li>显卡：60MB左右显存</li>
<li>其他<ul>
<li>键盘</li>
<li>鼠标</li>
<li>屏幕</li>
</ul>
</li>
</ul>
</li>
<li>磁盘分区参考<ul>
<li>强制使用GPT模式</li>
<li>BIOS boot 2MB</li>
<li>/boot</li>
<li>/</li>
<li>/home</li>
<li>swap</li>
</ul>
</li>
<li>启动引导程序</li>
<li>选择软件</li>
<li>检查</li>
</ul>
</li>
<li>开始安装CenterOs7<ul>
<li>步骤：<ul>
<li>调整BIOS</li>
<li>选择安装模式</li>
<li>选择语言</li>
<li>软件选择</li>
<li>磁盘分区</li>
<li>启动引导程序</li>
<li>安装后的首次设置</li>
</ul>
</li>
<li>调整BIOS和虚拟机创建流程<ul>
<li><code>dd if=centeros7.iso of=/dev/sdc</code></li>
<li>光盘错误处理<ul>
<li>硬件不支持</li>
<li>光盘跳盘</li>
<li>光盘有问题</li>
</ul>
</li>
</ul>
</li>
<li>安装模式启动<ul>
<li>正常安装</li>
<li>测试后再安装</li>
<li>除错模式<ul>
<li>图形化界面安装</li>
<li>恢复系统</li>
<li>运行内存测试程序</li>
<li>本地磁盘启动，不使用光盘</li>
</ul>
</li>
</ul>
</li>
<li>如何GPT强制执行（关键）<ul>
<li>正常安装CENTERos 7</li>
<li>按下Tab键</li>
<li>输入参数，自行百度</li>
</ul>
</li>
</ul>
</li>
<li>安装过程<ul>
<li>不记录，请看书</li>
</ul>
</li>
<li>其他功能：<ul>
<li>RAM测试，安装笔记本的内核参数<ul>
<li>内存压力测试：memtest86</li>
</ul>
</li>
<li>安装笔记本电脑的参数<ul>
<li>去掉笔记本的一些配置影响<ul>
<li>正常安装centeros 7</li>
<li><code>nofb apm=off acpi=off pci=noacpi</code></li>
<li>nofb 取消缓存检测</li>
</ul>
</li>
</ul>
</li>
<li>多重引导安装和管理（可选）</li>
<li>安装规划</li>
</ul>
</li>
</ul>
<h2 id="第四章：首次登陆和在线求助"><a href="#第四章：首次登陆和在线求助" class="headerlink" title="第四章：首次登陆和在线求助"></a>第四章：首次登陆和在线求助</h2><ul>
<li>基础命令操作<ul>
<li>date : 时间<ul>
<li><code>date +%y/%m/%d</code></li>
<li><code>date +%H/%m</code></li>
</ul>
</li>
<li>cal：日历<ul>
<li>cal 年份</li>
<li>cal 月份 年份</li>
<li>cal 13 2015 错误结果</li>
</ul>
</li>
<li>bc：计算器</li>
</ul>
</li>
<li>重要热键<ul>
<li>Tab</li>
<li>Ctrl-c</li>
<li>Ctrl-d<ul>
<li>相当于 exit</li>
</ul>
</li>
<li>CenterOS7 补全功能有可能补全命令<ul>
<li>Bash-completion</li>
</ul>
</li>
<li>Shift + PageUp 或者 PageDown<ul>
<li>相当于翻页</li>
</ul>
</li>
</ul>
</li>
<li>Linux 在线求助 man page 和 info page<ul>
<li>g 开头命令</li>
<li>man 的组成<ul>
<li>name</li>
<li>synopsis</li>
<li>description</li>
<li>options</li>
<li>command</li>
<li>files</li>
<li>see also</li>
<li>example</li>
</ul>
</li>
<li>看帮助文档技巧<ul>
<li>查看Name部分</li>
<li>详细看下Description</li>
<li>如果熟悉命令，直接看options</li>
<li>see also 查看相关使用</li>
<li>列举有关的file 部分</li>
</ul>
</li>
<li>查看命令<ul>
<li>空格：下翻</li>
<li>page down 下翻</li>
<li>page up 向上</li>
<li>Home 第一页</li>
<li>end 最后一页</li>
<li>/string 向下查找</li>
<li>?string 向上查找</li>
<li>n,N 继续查询</li>
<li>q 结束</li>
</ul>
</li>
<li>man的位置<ul>
<li><code>/usr/share/man</code></li>
<li><code>/etc/man_db.conf</code></li>
</ul>
</li>
<li>info<ul>
<li>网页显示</li>
<li>默认位置<ul>
<li>/usr/share/info</li>
</ul>
</li>
<li>内容<ul>
<li>File</li>
<li>Node</li>
<li>Next</li>
<li>Up</li>
<li>Prev</li>
</ul>
</li>
</ul>
</li>
<li>其他有用的文件<ul>
<li>/usr/share/doc<ul>
<li>例子：<ul>
<li>/usr/share/doc/grub2-tools-20.2</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>nano<ul>
<li>简单文本编译器</li>
</ul>
</li>
<li>正确的关机办法<ul>
<li>正确使用<ul>
<li>shutdown<ul>
<li>/sbin/shutdown [-krhc] [时间] [警告信息]</li>
</ul>
</li>
<li>reboot</li>
</ul>
</li>
<li>常用<ul>
<li>shutdown</li>
</ul>
</li>
<li>重启<ul>
<li>rebbot</li>
<li>halt poweroff</li>
</ul>
</li>
<li>查看状况<ul>
<li>who</li>
</ul>
</li>
<li>同步写入磁盘<ul>
<li>sync</li>
</ul>
</li>
<li>systemctl 重要命令</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="练习题"><a href="#练习题" class="headerlink" title="练习题"></a>练习题</h3><ol>
<li>终端信息如何来的，/etc/issue 文件当中</li>
</ol>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">结果</span><br><span class="line">\S</span><br><span class="line">Kernel \r on an \m</span><br><span class="line">2.</span><br></pre></td></tr></table></figure>

<p>\r 代表内核</p>
<p>\m 硬件等级</p>
<ol>
<li>man issue 查找文件的个数</li>
</ol>
<h2 id="第五章：文件权限和目录"><a href="#第五章：文件权限和目录" class="headerlink" title="第五章：文件权限和目录"></a>第五章：文件权限和目录</h2><ul>
<li>linux 用户记录和用户身份的文件<ul>
<li>记录 <code>/etc/passwd</code></li>
<li><code>/etc/shadow</code></li>
</ul>
</li>
<li>linux 文件属性<ul>
<li>drwx——- 5 root root 4096 May 29 16:08<ul>
<li>第一个栏目代表文件类型和权限</li>
<li>第一个字符代表是如下<ul>
<li>文件</li>
<li>目录</li>
<li>连接</li>
<li>b 设备文件</li>
<li>c 串行端口设备</li>
</ul>
</li>
<li>接下来设置<ul>
<li>r 读取</li>
<li>w 写</li>
<li>x 运行</li>
</ul>
</li>
<li>第一组是自己的权限</li>
<li>第二组是同用户组的权限</li>
<li>第三组为别人的权限</li>
</ul>
</li>
<li>第二个大足 5 代表多少个文件名连接到此节点</li>
<li>第三个代表当前目录或者文件的所有者</li>
<li>第四个代表所在用户组</li>
<li>第五个代表文件大小</li>
<li>地浏览创建日期或者最近修改日期</li>
</ul>
</li>
<li>修改文件属性和权限<ul>
<li>三个常用命令<ul>
<li>chgrp<ul>
<li>修改所属组</li>
<li><code>chgrp users init-ss.cfg</code></li>
</ul>
</li>
<li>chown<ul>
<li><code>chown [-R] 账号:用户组</code></li>
</ul>
</li>
<li>chmod<ul>
<li><code>chmod xyz 文件或者目录</code></li>
<li><code>chmod</code> u=rwx,go=rx 文件或者目录</li>
<li><code>chmod a-x 文件名或者目录</code></li>
</ul>
</li>
</ul>
</li>
<li>权限的延伸意义<ul>
<li>r<ul>
<li>可以ls</li>
</ul>
</li>
<li>w<ul>
<li>建立目录和文件</li>
<li>删除已有文件或目录</li>
<li>更名</li>
<li>移动位置</li>
</ul>
</li>
<li>x<ul>
<li>目录的x代表能否成为工作目录</li>
</ul>
</li>
<li>总结<ul>
<li>分配权限至少需要 rx 的权限</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>文件种类和扩展名<ul>
<li>常规文件<ul>
<li>纯文本</li>
<li>二进制</li>
<li>数据文件<ul>
<li>用户登录记录在 /var/log/wtmp</li>
</ul>
</li>
</ul>
</li>
<li>目录</li>
<li>链接</li>
<li>设备和设备文件<ul>
<li>区块设备</li>
<li>字符设备</li>
</ul>
</li>
<li>数据接口<ul>
<li>/run 或者 /tmp</li>
</ul>
</li>
<li>FIFO 数据传输文件<ul>
<li>解决并发读写的问题</li>
</ul>
</li>
</ul>
</li>
<li>Linux文件扩展名</li>
<li>文件名字长度限制<ul>
<li>单一文件目录最大为255字节<ul>
<li>128个汉字左右</li>
</ul>
</li>
<li>避免特殊字符</li>
</ul>
</li>
<li>FHS 目录配置<ul>
<li>可分享和不可分享</li>
<li>不变和可变动</li>
<li>规范<ul>
<li>/ : 和系统有关</li>
<li>/usr : 软件的安装和执行有关</li>
<li>/var ： 系统运行过程有关</li>
</ul>
</li>
<li>规范要求的目录<ul>
<li>/<ul>
<li>/bin<ul>
<li>单人维护下依然可以使用的命令</li>
</ul>
</li>
<li>/boot<ul>
<li>内核常用文件</li>
</ul>
</li>
<li>/dev<ul>
<li>设备</li>
</ul>
</li>
<li>/etc<ul>
<li>不要放可执行文件</li>
<li>系统的主要配置文件</li>
</ul>
</li>
<li>/lib<ul>
<li>库函数</li>
</ul>
</li>
<li>/media<ul>
<li>媒体设备</li>
</ul>
</li>
<li>/mnt<ul>
<li>挂载外部硬盘</li>
</ul>
</li>
<li>/opt<ul>
<li>第三方软件</li>
<li>个人公司的标准</li>
</ul>
</li>
<li>/run<ul>
<li>新版可以用内存模拟</li>
</ul>
</li>
<li>/sbin<ul>
<li>只有root 操作的命令</li>
</ul>
</li>
<li>/srv<ul>
<li>service</li>
<li>网络服务</li>
</ul>
</li>
<li>/tmp<ul>
<li>临时文件</li>
</ul>
</li>
<li>/usr<ul>
<li>/usr/bin<ul>
<li>一般用户能使用的命令</li>
</ul>
</li>
<li>/usr/lib<ul>
<li>/lib基本相同的功能</li>
</ul>
</li>
<li>/usr/local<ul>
<li>系统管理员建议安装目录</li>
</ul>
</li>
<li>/usr/sbin<ul>
<li>非系统正常运行需要的命令</li>
</ul>
</li>
<li>/usr/share<ul>
<li><strong>只读</strong>数据文件</li>
</ul>
</li>
<li>/usr/games</li>
<li>/usr/include<ul>
<li>c,c++</li>
</ul>
</li>
<li>/usr/libexec<ul>
<li>不被常用的执行文件或者脚本</li>
</ul>
</li>
<li>/usr/lib<qual>/</li>
<li>usr/src<ul>
<li>源代码建议位置</li>
</ul>
</li>
</ul>
</li>
<li>/var<ul>
<li>/var/cache<ul>
<li>程序本身的缓存</li>
</ul>
</li>
<li>/var/lib</li>
<li>/var/lock</li>
<li>/var/log</li>
<li>/var/mail</li>
<li>/var/run</li>
<li>/var/spool</li>
</ul>
</li>
<li>/home<ul>
<li>用户家目录</li>
<li>~：表示目前用户家目录</li>
<li>~xxx（用户名）：谁的家目录</li>
</ul>
</li>
<li>/root<ul>
<li>系统管理员的家</li>
</ul>
</li>
<li>/lost+found<ul>
<li>标准的ext 文件系统的目录</li>
</ul>
</li>
<li>/proc<ul>
<li>虚拟文件系统</li>
</ul>
</li>
<li>/sys<ul>
<li>虚拟文件系统</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>早期系统必备五个目录挂载点<ul>
<li>/etc /dev /lib /sbin /bin</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="练习题-1"><a href="#练习题-1" class="headerlink" title="练习题"></a>练习题</h3><p>早期的 Unix 系统文件名最多允许 14 个字符，而新的 Unix 与 Linux 系统中，文件名最多可以容许几个 字符？</p>
<ul>
<li><p>当一个一般文件权限为 -rwxrwxrwx 则表示这个文件的意义为？</p>
</li>
<li><p>我需要将一个文件的权限改为 -rwxr-xr– 请问该如何下达指令？</p>
</li>
<li><p>若我需要更改一个文件的拥有者与群组，该用什么指令？ chown, chgrp</p>
</li>
<li><p>请问底下的目录与主要放置什么数据： /etc/, /boot, /usr/bin, /bin, /usr/sbin, /sbin, /dev, /var/ log, /run</p>
<p>/etc/：几乎系统的所有配置文件案均在此，尤其 passwd,shadow /boot：开机配置文件，也是预设摆放核心 vmlinuz 的地方 /usr/bin, /bin：一般执行档摆放的地方 /usr/sbin, /sbin：系统管理员常用指令集 /dev：摆放所有系统装置文件的目录 /var/log：摆放系统注册表文件的地方 /run：CentOS 7 以后才有，将经常变动的项目(每次开机都不同，如程序的 PID)移动到内存暂存，所以 /run 并不占实 际磁盘容量</p>
</li>
<li><p>若一个文件的档名开头为『 . 』，例如 .bashrc 这个文件，代表什么？另外，如何显示出这个文件名与他的 相关属性？</p>
<p>有『 . 』为开头的为隐藏档，需要使用 ls -a 这个 -a 的选项才能显示出隐藏文件的内容，而使用 ls -al 才能显示出属性。</p>
</li>
</ul>
<h2 id="第六章-Linux文件与目录管理"><a href="#第六章-Linux文件与目录管理" class="headerlink" title="第六章 Linux文件与目录管理"></a>第六章 Linux文件与目录管理</h2><ul>
<li>目录和路径</li>
<li>相对路径和绝对路径</li>
<li>目录相关操作<ul>
<li>. 代表当前</li>
<li>..</li>
<li>- 前一个工作目录</li>
<li>~account 代表账号对应的家目录</li>
</ul>
</li>
<li>cd</li>
<li>pwd</li>
<li>mkdir</li>
<li>rmdir</li>
<li>执行路径的变量（$PATH）<ul>
<li>为什么我可以在任何地方执行 ls</li>
<li><code>echo $PATH</code></li>
<li>PATH=”${PATH}:/root” 添加环境变量</li>
<li>不要用 “.” 作为环境变量</li>
<li>可以做的事<ul>
<li>不同身份用户默认PATH不一样</li>
<li>PATH可以修改</li>
<li>使用绝对或者相对指定某个文件的文件名来执行，比PATH准确 ** 因为环境变量的命令存在重名优先级的问题</li>
<li>本目录不要放到环境变量</li>
</ul>
</li>
</ul>
</li>
<li>ls<ul>
<li><code>ls --full-time ~</code></li>
</ul>
</li>
<li>cp rm mv<ul>
<li>cp<ul>
<li>cp 源文件 目标文件<ul>
<li><strong>-a 相当于 -dr—preserve=all 保留指定的属性（默认值：mode，ownership，timestamps）（如果可能）传统属性：上下文，链接，xattr，所有</strong></li>
<li>-d 与–no-dereference –preserve = links相同。源文件为链接，则复制文件属性而非文件</li>
<li>-f 如果无法打开现有目标文件，将其删除，然后重试（此选项为 当同时使用-n选项时，将被忽略）</li>
<li><strong>-i 覆盖前提示（覆盖先前的-n选项）</strong></li>
<li><strong>-p 连同文件的属性一起复制，而非默认（备份常用）</strong></li>
<li>-r 递归复制</li>
<li>-s 复制为链接形式</li>
<li>-t 根据时间排序</li>
</ul>
</li>
<li>注意需要多文件复制，最后一个一定是目录</li>
<li>执行cp前的思考<ul>
<li>是否需要保留完整源文件信息</li>
<li>源文件是否为符号链接</li>
<li>源文件是否是特殊文件</li>
<li>源文件是否为目录！</li>
</ul>
</li>
</ul>
</li>
<li>rm<ul>
<li>rm 文件或者目录</li>
<li>超级危险的命令</li>
</ul>
</li>
<li>mv<ul>
<li>mv source des<ul>
<li>-f 强制</li>
<li>-i 询问</li>
<li>-u 只有新文件才能更新</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>获取路径的文件名和目录名称<ul>
<li>basename</li>
<li>dirname</li>
</ul>
</li>
<li>文件内容的读取<ul>
<li>cat 第一行开始</li>
</ul>
</li>
<li>tac 最后一行开始<ul>
<li>nl 显示行号</li>
</ul>
</li>
<li>more 一页一页<ul>
<li>less 和More差不多，但是可以往前翻页</li>
</ul>
</li>
<li>head 只看前几行<ul>
<li>tail 只看后几行</li>
</ul>
</li>
<li>od 以二进制读取<ul>
<li>直接查看内容<ul>
<li>cat<ul>
<li>-A 列出一些空白字符不是空白而已</li>
<li>空格和制表符分别代表如下<ul>
<li>制表符: ^I</li>
</ul>
</li>
</ul>
</li>
<li>-b 列出行号<ul>
<li>-n 空白行也有行号</li>
</ul>
</li>
<li>-E 结尾换行符显示<ul>
<li>-v 特殊字符显示</li>
</ul>
</li>
<li>tac<ul>
<li>反向显示</li>
</ul>
</li>
<li>nl<ul>
<li>-b 指定行号的格式</li>
<li>-b a 是否空行都有行号<ul>
<li>-b t 如果有空行，空行不显示</li>
</ul>
</li>
</ul>
</li>
<li>-n 列出行号的方法<ul>
<li>-n ln 左对齐</li>
<li>-n rn 右对齐<ul>
<li>-n rz 自己栏位的最右方显示</li>
</ul>
</li>
</ul>
</li>
<li>-w 行号栏位占用字符数<ul>
<li><code>nl -b a -n rz /etc/issue</code></li>
<li><code>nl -b a -n rz -w 3 /etc/issue</code></li>
</ul>
</li>
<li>more<ul>
<li>空格 下一页</li>
<li>/字符串</li>
<li>:f 立刻显示文件名和显示行数</li>
<li>q</li>
<li>b 回翻</li>
</ul>
</li>
<li>less<ul>
<li>page up 前翻</li>
<li>page down 后翻</li>
<li>N 反向重复前一个查找</li>
<li>g 前进到这个数据前一行</li>
<li>G 前进到这个数据最后一行</li>
</ul>
</li>
<li>q 离开</li>
</ul>
</li>
<li>head<ul>
<li>-n 显示几行</li>
<li>tail<ul>
<li>取后面几行</li>
</ul>
</li>
<li>-n 行数</li>
</ul>
</li>
<li>如何去除10到20行的数据<ul>
<li><code>head -n 20 /etc/man_db.conf | tail -n 10</code></li>
<li><code>cat -n /etc/man_db.conf | head -n 20 | tail -n 10</code></li>
<li>od 非纯文本文件</li>
<li>a 默认字符<ul>
<li>c ascii</li>
</ul>
</li>
<li>d 十进制<ul>
<li>f 浮点数</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>修改文件或者创建新文件<ul>
<li>修改时间 mtime<ul>
<li>内容修改的时候：如增加或者删除字符</li>
<li>状态时间 ctime<ul>
<li>状态被改变：如权限被改了</li>
</ul>
</li>
<li>读取时间 atime<ul>
<li>只要被读取</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>ls 默认为 m time<ul>
<li>touch 命令</li>
<li>-a 仅自定义access time<ul>
<li>-c 修改文件的时间，不存在不建立新文件</li>
<li>-d 后面可以接预定义的日期而不用目前的时间，</li>
<li>-m 仅修改mtime</li>
<li>-t 后面接预定义时间 [YYYYMMDDhhmm]</li>
<li>案例<ul>
<li><code>date ; ll --time=atime .; ll --time=ctime .; ll --time=mtime .</code></li>
</ul>
</li>
</ul>
</li>
<li>常用情况<ul>
<li>建立空文件</li>
<li>某个日期改成目前（mtime, atime）</li>
</ul>
</li>
<li>文件和目录隐藏权限<ul>
<li>新增文件和目录之后，默认的权限是什么？<ul>
<li>umask<ul>
<li>-S 使用字符表示权限</li>
<li>指的是需要减掉的权限<ul>
<li>如0 就是所有权限都不要减掉</li>
</ul>
</li>
<li><code>umask 002</code></li>
<li>umask 在搭建文件服务器的作用很大</li>
</ul>
</li>
</ul>
</li>
<li>文件隐藏属性<ul>
<li>注意必须在 ext 2 3 4 的系统上完全生效</li>
<li>chattr [+-=] 文件和目录<ul>
<li>+ 增加一个特殊参数</li>
<li>- 删除特殊参数</li>
<li>= 直接设置</li>
<li>A 设置这个属性的时候。atime 不会改动、避免过度读写磁盘</li>
<li>S 非同步写磁盘，修改文件会同步写入磁盘</li>
<li>a 设置之后只能增加数据,不能删除和修改，只有root有权限</li>
<li>c 默认对文件压缩存储</li>
<li>d 阻止dump程序dump文件</li>
<li><strong>i 让文件不能删除，改名，设置连接也无法写入或者新增， 只有root有权限</strong></li>
<li>s 如果设置s，文件被删除，完全从磁盘删除</li>
<li>u 相反，被删除了，内容还在磁盘，用于文件恢复</li>
</ul>
</li>
<li>注意点：<ul>
<li>a 和 i 比较常用</li>
<li>xfs 文件系统仅仅支持 AadiS</li>
</ul>
</li>
<li>lsattr [-adR] 文件或者目录<ul>
<li>-a 隐藏文件也显示</li>
<li>-d 如果是目录，仅仅列出目录</li>
<li>-R 子目录一起列出来</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>文件特殊权限<ul>
<li>SUID<ul>
<li>只对二进制文件有效</li>
<li>执行者对于该程序具有x可执行权限</li>
<li>仅在执行过程中有效</li>
<li>执行者具有拥有者的权限</li>
<li>处理密码这种机密文件只能让root修改，但是又要让用户可以修改自己密码的时候这种情况的处理方式</li>
<li>案例<ul>
<li>/etc/bin/passwd</li>
<li>用户对于passwd 有执行权限，所以是执行者</li>
<li>passwd 拥有者是root</li>
<li>用户执行passwd的时候，会得到root权限</li>
<li>由于有暂时的root权限，所以可以修改密码，但是只能修改自己的那部分</li>
</ul>
</li>
<li><strong>只能是二进制文件，只能是二进制文件，只能是二进制文件</strong></li>
</ul>
</li>
<li>SGID<ul>
<li>ls -l /usr/bin/local</li>
<li>文件的情况<ul>
<li>对于二进制有用</li>
<li>程序执行者对于程序来说是 x权限</li>
<li>执行者在执行过程中获得用户组的支持</li>
</ul>
</li>
<li>目录的情况<ul>
<li>r和x权限，可以进入此目录</li>
<li>此目录的有效用户组，会变成改目录的用户组</li>
<li>如果在此目录新建文件，该文件的用户组会和此目录的用户组相同</li>
</ul>
</li>
<li>举例<ul>
<li><code>sudo ls -l /usr/bin/locate /var/lib/mlocate/mlocate.db</code></li>
</ul>
</li>
</ul>
</li>
<li>SBIT<ul>
<li>用户对于此目录具有w,x权限的时候，具有写入的权限</li>
<li>该目录新建文件的时候，仅有自己和root有权利删除该文件</li>
</ul>
</li>
<li>后面的章节再来回顾,请看16章</li>
</ul>
</li>
<li>观察文件类型 file 命令<ul>
<li>案例 <code>file /etc/bin/passwd</code></li>
</ul>
</li>
</ul>
</li>
<li>文件的查找<ul>
<li>which<ul>
<li>-a 将所有由PATH 环境变量可以找到的列出来</li>
<li>注意是以 PATH为环境变量起点的</li>
</ul>
</li>
<li>find<ul>
<li>能不用就不用</li>
</ul>
</li>
<li>whereis<ul>
<li>-l 列出会去查看的几个主要目录</li>
<li>-b 只看二进制文件</li>
<li>-m 只查找说明文件Manual 路径的文件( man 记录的)</li>
<li>-s 执照源文件</li>
<li>-u 查找不在上述文件的三个文件</li>
<li>案例<ul>
<li>找出 ifconfig 文件名</li>
<li>执照出和passwd有关的说明文件</li>
</ul>
</li>
</ul>
</li>
<li><strong>locate</strong> / updatedb<ul>
<li>-I 忽略大小写</li>
<li>-c 不输出文件名，只输出数量</li>
<li>-l 输出几行，五行就是 -l 5</li>
<li>-S 输出locate 使用的数据库信息</li>
<li>-r 正则方式</li>
<li>案例<ul>
<li>找出系统中和passwd 相关的所有文件名，只需要5个</li>
<li>列出locate查询使用的信息和列出数据的数量</li>
</ul>
</li>
<li>注意点<ul>
<li>新文件有可能找不到，因为数据库一般是一天更新一次</li>
<li>更新方法：updatedb</li>
</ul>
</li>
<li>原理<ul>
<li>按照 /var/lib/mlocate 数据库近路，找出关键词的文件名</li>
</ul>
</li>
<li></li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="练习题-2"><a href="#练习题-2" class="headerlink" title="练习题"></a>练习题</h3><p>情境模拟题一：假设系统中有两个账号，分别是 alex 与 arod ，这两个人除了自己群组之外还共同支持一个名为 project 的群组。假设这两个用户需要共同拥有 /srv/ahome/ 目录的开发权，且该目录不许其他人进入查阅。 请问 该目录的权限设定应为何？请先以传统权限说明，再以 SGID 的功能解析。  目标：了解到为何项目开发时，目录最好需要设定 SGID 的权限！  前提：多个账号支持同一群组，且共同拥有目录的使用权！  需求：需要使用 root 的身份来进行 chmod, chgrp 等帮用户设定好他们的开发环境才行！ 这也是管理员的 重要任务之一！</p>
<h3 id="简答题"><a href="#简答题" class="headerlink" title="简答题"></a>简答题</h3><p>什么是绝对路径与相对路径 绝对路径的写法为由 / 开始写，至于相对路径则不由 / 开始写！此外，相对路径为相对于目前工作目录的路径！  如何更改一个目录的名称？例如由 /home/test 变为 /home/test2 mv /home/test /home/test2  PATH 这个环境变量的意义？ 这个是用来指定执行文件执行的时候，指令搜寻的目录路径。  umask 有什么用处与优点？ umask 可以拿掉一些权限，因此，适当的定义 umask 有助于系统的安全， 因为他可以用来建立默认的目录或文件的权限。  当一个使用者的 umask 分别为 033 与 044 他所建立的文件与目录的权限为何？ 在 umask 为 033 时，则预设是拿掉 group 与 other 的 w(2)x(1) 权限，因此权限就成为『文件 -rw-r–r– ， 目录 drwxr–r– 』 而当 umask 044 时，则拿掉 r 的属性，因此就成为『文件 -rw–w–w-，目录 drwx-wx-wx』  什么是 SUID ？ 当一个指令具有 SUID 的功能时，则： o SUID 权限仅对二进制程序(binary program)有效； o 执行者对于该程序需要具有 x 的可执行权限； o 本权限仅在执行该程序的过程中有效 (run-time)； o 执行者将具有该程序拥有者 (owner) 的权限。  当我要查询 /usr/bin/passwd 这个文件的一些属性时(1)传统权限；(2)文件类型与(3)文件的隐藏属性，可以使 用什么指令来查询？ ls -al file lsattr  尝试用 find 找出目前 linux 系统中，所有具有 SUID 的文件有哪些？ find / -perm +4000 -print  找出 /etc 底下，文件大小介于 50K 到 60K 之间的文件，并且将权限完整的列出 (ls -l)： find /etc -size +50k -a -size -60k -exec ls -l {} ; 注意到 -a ，那个 -a 是 and 的意思，为符合两者才算成功  找出 /etc 底下，文件容量大于 50K 且文件所属人不是 root 的档名，且将权限完整的列出 (ls -l)； find /etc -size +50k -a ! -user root -exec ls -ld {} ; find /etc -size +50k -a ! -user root -type f -exec ls -l {} ; 上面两式均可！注意到 ! ，那个 ! 代表的是反向选择，亦即『不是后面的项目』之意！  找出 /etc 底下，容量大于 1500K 以及容量等于 0 的文件： find /etc -size +1500k -o -size 0 相对于 -a ，那个 -o 就是或 (or) 的意思啰！</p>
<h2 id="第七章-Linux-磁盘和文件系统的管理"><a href="#第七章-Linux-磁盘和文件系统的管理" class="headerlink" title="第七章 Linux 磁盘和文件系统的管理"></a>第七章 Linux 磁盘和文件系统的管理</h2><ul>
<li><p>磁盘组成和分区复习</p>
<ul>
<li>请看第一章对于磁盘的记录</li>
<li>GPT和MBR分区</li>
<li>磁盘组成</li>
</ul>
</li>
<li><p>文件系统的特性</p>
<ul>
<li>Linux正统文件系统为ext2<ul>
<li>windows 不支持 ext2 文件系统</li>
</ul>
</li>
<li>通常一个可挂载的数据为一个文件系统而不是分区<ul>
<li>通常将文件权限和文件属性放在不同的区块<ul>
<li>权限和属性放到inode</li>
<li>实际数据放到数据区块</li>
</ul>
</li>
<li>每个inode都有编号<ul>
<li>超级区块<ul>
<li>文件系统的整体信息，inode 数据区块的总量，使用量，剩余量，文件系统的格式和相关信息</li>
</ul>
</li>
<li>inode 记录文件的属性，一个文件占用一个inode, 记录文件的数据所在区块号码</li>
<li>数据区块：实际记录的文件内容，文件过大会占用多个区块</li>
</ul>
</li>
<li>这种方式是<strong>索引式文件系统</strong></li>
<li>ext2 的限制<ul>
<li>区块的大小和数量格式化之后不能修改</li>
<li>每个区块最多防止一个文件的数据</li>
<li>承上，如果文件大于区块，占用多个区块</li>
<li>承上，反之，剩余空间会被浪费</li>
</ul>
</li>
</ul>
</li>
<li>inode table<ul>
<li>inode 记录如下<ul>
<li>读写属性</li>
<li>拥有者和用户组</li>
<li>文件大小</li>
<li>建立或者状态改变的时间 ctime</li>
<li>最后一次读取时间</li>
<li>最后修改时间</li>
<li>定义文件的标识</li>
<li>文件真正的内容指向</li>
</ul>
</li>
<li>特点<ul>
<li>每个inode 大小固定128B （ext4 到了 256B）</li>
<li>文件占用一个 inode</li>
<li>建立文件数量和inode数量有关</li>
<li>读取文件需要先找到inode, 分析Inode 记录的权限和用户是否符合，符合才可以读取</li>
</ul>
</li>
<li>1KB的块最大单一文件限制为16GB是如何计算的？<ul>
<li>12个直接、一个间接、一个三间接</li>
<li>12个直接指向 12 * 1 K = 12 K</li>
<li>间接 256*1K = 256K</li>
<li>1的大小可以存256条记录</li>
<li>双间接<ul>
<li>256<em>256</em> 1K = 256*2K</li>
</ul>
</li>
<li>三间接<ul>
<li>256 * 256 * 256</li>
</ul>
</li>
<li>总额，三者相加 = 12 + 256 +256 * 256 + 256 * 256 * 256 = 16GB</li>
</ul>
</li>
</ul>
</li>
<li>超级区块<ul>
<li>主要信息<ul>
<li>数据区块 和 inode 总量</li>
<li>未使用和已经使用的inode 数量</li>
<li>数据区块的inode 大小</li>
<li>文件系统的挂载时间、最近一次的写入数据时间、最近一次检验磁盘时间、文件系统的信息</li>
<li>一个有效数值、如果此文件已经被挂载，有效为0，否则为1</li>
</ul>
</li>
<li>区块对照表</li>
<li>inode 对照表</li>
<li>dump2fs</li>
</ul>
</li>
</ul>
</li>
<li><p>和目录树的关系</p>
<ul>
<li>读取一个文件路径的底层步骤</li>
<li>例子<ul>
<li>读取/etc/passwd 的流程如下<ul>
<li>/ 的 inode</li>
<li>/ 的区块</li>
<li>etc/ 的 inode</li>
<li>etc/ 的区块</li>
<li>passwd 的 inode</li>
<li>passwd 的 区块</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><p>ext 文件的存取和日志式文件系统功能</p>
<ul>
<li>新增文件系统操作<ul>
<li>确定是否有w和x权限</li>
<li>根据inode 对照表找到对应的inode号码，新文件写入</li>
<li>根据区块对照表找到没有使用的区块代码，将实际的数据写入区块，更新inode的区块数据</li>
<li>将刚刚写入的inode 与区块数据同步更新inode对照表和区块对照表，并更新超级区块的内容</li>
<li>同步操作</li>
</ul>
</li>
<li>日志式文件系统<ul>
<li>预备：写入一个文件的时候，需要日志记录区块记录某个文件要写入的信息</li>
<li>实际写入：开始写入文件权限和数据，更新Metadata 的数据</li>
<li>结束：完成数据和metadata的更新，在日志记录区块记录</li>
</ul>
</li>
</ul>
</li>
<li><p>Linux文件系统的执行</p>
<ul>
<li>异步处理<ul>
<li>没被修改的数据设置为clear</li>
<li>被修改后，设置为脏数据</li>
<li>此时操作还在进行，没有写入磁盘</li>
</ul>
</li>
<li>文件系统贺内存的关系<ul>
<li>系统会常用文件数据放到内存缓冲区，加速读写</li>
<li>Linuxd物理内存最后都会用光，这才是正常 情况</li>
<li>手动sync 强制内存脏数据回写磁盘</li>
<li>正常关机，会主动sync回写磁盘</li>
<li>不正常关机，需要重启之后磁盘校验，甚至文件系统的损坏</li>
</ul>
</li>
</ul>
</li>
<li><p>挂载点的意义</p>
<ul>
<li>传统文件系统：<ul>
<li>ext2</li>
<li>minix</li>
<li>fat</li>
<li>iso9660</li>
</ul>
</li>
<li>日志式文件系统<ul>
<li>ext3</li>
<li>ext4</li>
<li>reiserFs</li>
<li>windows ntfs</li>
<li>ibm jfs</li>
<li>sgi xfs</li>
<li>zfs</li>
</ul>
</li>
<li>网络文件系统<ul>
<li>nfs</li>
<li>smbfs</li>
</ul>
</li>
<li>查询<ul>
<li><code>ls -l /lib/moudules/$(uname -r)/kernel/fs</code></li>
<li><code>cat /proc/filesystems</code></li>
</ul>
</li>
<li>linux VFS</li>
</ul>
</li>
<li><p>XFS 文件系统</p>
<ul>
<li><p>ext的问题</p>
<ul>
<li>支持面最广，格式化最慢</li>
</ul>
</li>
<li><p>数据区</p>
<ul>
<li>inode 容量可以调整</li>
<li>实际最高可使用区块为4K</li>
<li>inode 可以再 256b - 2MB</li>
</ul>
</li>
<li><p>文件系统活动登录区</p>
</li>
<li><p>实时运行区</p>
</li>
<li><p>查看命令</p>
<ul>
<li><p>```<br>xfs_info 挂载点|设备</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">      - &#96;xfs_info &#x2F;dev&#x2F;vda2&#96;</span><br><span class="line">      - &#96;df -T &#x2F;boot&#96;</span><br><span class="line"></span><br><span class="line">- 文件系统的简单操作</span><br><span class="line"></span><br><span class="line">  - 磁盘和目录的容量</span><br><span class="line"></span><br><span class="line">    - df</span><br><span class="line"></span><br><span class="line">      - 列出文件系统的整体磁盘使用量</span><br><span class="line"></span><br><span class="line">      - 参数</span><br><span class="line"></span><br><span class="line">        - -a 列出所有文件系统</span><br><span class="line">        - -k kbyte 显示文件系统容量</span><br><span class="line">        - -m mbbyte 显示文件系统容量</span><br><span class="line">        - **-h 以人们较容易阅读的Gbyte,mbyte,kbyte 等格式自行显示**</span><br><span class="line">        - -H 以 M&#x3D;1000K 替换 M&#x3D;1024K进位方式</span><br><span class="line">        - -T 连同磁盘分区文件系统名称也列出</span><br><span class="line">        - **-i 不用磁盘容量，inode 数量显示**</span><br><span class="line"></span><br><span class="line">      - 格式</span><br><span class="line"></span><br><span class="line">        - Filesystem: 文件系统是哪个硬盘分区</span><br><span class="line">        - 1K-blocks：说明下面的数字是1KB</span><br><span class="line">        - Used：使用掉的</span><br><span class="line">        - Available：剩下的磁盘大小</span><br><span class="line">        - Use%：使用率，如果大于90%注意一下</span><br><span class="line">        - mounted on：磁盘的挂载目录</span><br><span class="line"></span><br><span class="line">      - 案例</span><br><span class="line"></span><br><span class="line">        -</span><br></pre></td></tr></table></figure>
<pre><code>df -aT
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">  - 列出系统内所有特殊文件以及名称都列出来</span><br><span class="line"></span><br><span class="line">-</span><br></pre></td></tr></table></figure>
df -h
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">          - 易读方式读取</span><br><span class="line"></span><br><span class="line">    - du</span><br><span class="line"></span><br><span class="line">      - 查看文件系统的磁盘使用量（常用在查看目录所占用磁盘空间）</span><br><span class="line">      - 参数</span><br><span class="line">        - -a 列出所有的文件和目录容量，因为默认仅仅是统计目录下面的文件量</span><br><span class="line">        - -h 易读的方式显示</span><br><span class="line">        - -s 仅仅李处总量，列出各个的目录占用量</span><br><span class="line">        - -S 不包含子目录下面的总计，与-s有点差别</span><br><span class="line">        - -k kb 列出</span><br><span class="line">        - -m mb列出</span><br><span class="line">      - 案例</span><br><span class="line">        - &#96;du&#96;</span><br><span class="line">        - &#96;du -sm &#x2F;*&#96;</span><br><span class="line"></span><br><span class="line">- 硬链接和符号链接</span><br><span class="line"></span><br><span class="line">  - 回顾</span><br><span class="line">    - 每个文件占用一个inode</span><br><span class="line">    - 读取文件必须要inode号码</span><br><span class="line">  - 硬链接知识某个目录增加一个文件名链接到Inode的关联记录</span><br><span class="line">  - 任何一个Inode硬链接删除，都不会影响另一个文档</span><br><span class="line">  - 缺点：</span><br><span class="line">    - 不能链接目录</span><br><span class="line">      - 为什么？</span><br><span class="line">    - 不能跨文件系统</span><br><span class="line">      - 为什么？</span><br><span class="line">  - 符号链接</span><br><span class="line">    - 特点</span><br><span class="line">      - 相当于windows 快捷方式，但是改变这个快捷方式的内容会直接影响源文档的内容</span><br><span class="line">      - 相当于文件引用的完全拷贝</span><br><span class="line">      - 如果源文件删除，引用会找不到内容</span><br><span class="line">    - 符号链接的容量计算</span><br><span class="line">      - 根据引用对象文件名字长度来确定</span><br><span class="line">    - Ln 默认使用硬链接</span><br><span class="line">    - 参数</span><br><span class="line">      - ln</span><br><span class="line">        - -s 符号链接，如果建立必须此参数</span><br><span class="line">        - -f 如果文件存在，删除后建立</span><br><span class="line"></span><br><span class="line">- 磁盘的格式化、分区、校验、挂载</span><br><span class="line"></span><br><span class="line">  - 新增磁盘的做法</span><br><span class="line"></span><br><span class="line">    - 对磁盘划分，建立可用分区</span><br><span class="line">    - 对于磁盘进行格式化，建立分区可用文件系统</span><br><span class="line">    - 仔细一点，则对于文件系统校验，</span><br><span class="line">    - Linux 上需要建立挂载点，挂载上来</span><br><span class="line"></span><br><span class="line">  - 如何知道自己的系统的文件系统</span><br><span class="line"></span><br><span class="line">    - lsblk device</span><br><span class="line"></span><br><span class="line">    - 选项与参数： -d ：仅列出磁盘本身，并不会列出该磁盘的分区数据 -f ：同时列出该磁盘内的文件系统名称 -i ：使用 ASCII 的线段输出，不要使用复杂的编码 (再某些环境下很有用) -m ：同时输出该装置在 &#x2F;dev 底下的权限数据 (rwx 的数据) -p ：列出该装置的完整文件名！而不是仅列出最后的名字而已。 -t ：列出该磁盘装置的详细数据，包括磁盘队列机制、预读写的数据量大小等</span><br><span class="line"></span><br><span class="line">    - 显示列解读</span><br><span class="line"></span><br><span class="line">       NAME：就是装置的文件名啰！会省略 &#x2F;dev 等前导目录！  MAJ:MIN：其实核心认识的装置都是透过这两个代码来熟悉的！分别是主要：次要装置代码！  RM：是否为可卸除装置 (removable device)，如光盘、USB 磁盘等等  SIZE：当然就是容量啰！  RO：是否为只读装置的意思  TYPE：是磁盘 (disk)、分区槽 (partition) 还是只读存储器 (rom) 等输出  MOUTPOINT：就是前一章谈到的挂载点</span><br><span class="line"></span><br><span class="line">    - 案例</span><br><span class="line"></span><br><span class="line">      - &#96;lsblk -ip &#x2F;dev&#x2F;vda&#96;</span><br><span class="line"></span><br><span class="line">  - blkid 列出设备的 UUID等参数</span><br><span class="line"></span><br><span class="line">  - parted 列出磁盘的 分区 表类型与 分区</span><br><span class="line"></span><br><span class="line">    - &#96;parted &#x2F;dev&#x2F;vda print&#96;</span><br><span class="line"></span><br><span class="line">    -</span><br></pre></td></tr></table></figure></code></pre><p>Model: Virtio Block Device (virtblk)<br>Disk /dev/vda: 42.9GB<br>Sector size (logical/physical): 512B/512B<br>Partition Table: msdos<br>Disk Flags: </p>
<p>Number  Start   End     Size    Type     File system  标志<br> 1      1049kB  42.9GB  42.9GB  primary  ext4         启动</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- 磁盘分区：gdisk &#x2F; fdisk</span><br><span class="line"></span><br><span class="line">  - MBR 分区表请使用 fdisk 分区， GPT 分区表请 使用 gdisk 分区！</span><br><span class="line"></span><br><span class="line">  - gdisk</span><br><span class="line"></span><br><span class="line">    - gdisk 设备名称</span><br><span class="line"></span><br><span class="line">    - 显示参数</span><br><span class="line"></span><br><span class="line">       Number：分区槽编号，1 号指的是 &#x2F;dev&#x2F;vda1 这样计算。  Start (sector)：每一个分区槽的开始扇区号码位置  End (sector)：每一个分区的结束扇区号码位置，与 start 之间可以算出分区槽的总容量  Size：就是分区槽的容量了  Code：在分区槽内的可能的文件系统类型。Linux 为 8300，swap 为 8200。不过这个项目只是一个提示而 已，不见得真的代表此分区槽内的文件系统喔！  Name：文件系统的名称等等。</span><br><span class="line"></span><br><span class="line">  - 注意不要加数字</span><br><span class="line"></span><br><span class="line">  - gdisk 新增分区</span><br><span class="line"></span><br><span class="line">    - &#96;cat &#x2F;proc&#x2F;partitions&#96;</span><br><span class="line"></span><br><span class="line">  - partprobe 更新 linux 内核的分区表信息</span><br><span class="line"></span><br><span class="line">    - partprobe -s 需要root权限</span><br><span class="line">    - 查看内核分区记录</span><br><span class="line">      - &#96;cat &#x2F;proc&#x2F;partitions&#96;</span><br><span class="line"></span><br><span class="line">  - 用gdisk 删除一个分区</span><br><span class="line"></span><br><span class="line">- fdisk</span><br><span class="line"></span><br><span class="line">  - &#96;fdisk &#x2F;dev&#x2F;vda&#96;</span><br></pre></td></tr></table></figure>
<p>a toggle a bootable flag<br>b edit bsd disklabel<br>c toggle the dos compatibility flag<br>d delete a partition &lt;==删除一个 partition<br>l list known partition types<br>m print this menu<br>n add a new partition &lt;==新增一个 partition<br>o create a new empty DOS partition table<br>p print the partition table &lt;==在屏幕上显示分区表<br>q quit without saving changes &lt;==不储存离开 fdisk 程序<br>s create a new empty Sun disklabel<br>t change a partition’s system id<br>u change display/entry units<br>v verify the partition table<br>w write table to disk and exit &lt;==将刚刚的动作写入分区表<br>x extra functionality (experts only)</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- 磁盘格式化</span><br><span class="line"></span><br><span class="line">  - xfs 文件系统 Mkfs.xfs</span><br><span class="line"></span><br><span class="line">    - &#96;mkfs.xfs [ - b bsize] [ - d parms] [- i parms] [ [ - l parms] [ - L label] [ - f] \ [ [- - r parms] 装置名称&#96;</span><br><span class="line">    - 参数</span><br></pre></td></tr></table></figure>
<p>选项与参数：<br>关于单位：底下只要谈到『数值』时，没有加单位则为 bytes 值，可以用 k,m,g,t,p (小写)等来解释<br>比较特殊的是 s 这个单位，它指的是 sector 的『个数』喔！</p>
</li>
<li><p>b ：后面接的是 block 容量，可由 512 到 64k，不过最大容量限制为 Linux 的 4k 喔！</p>
</li>
<li><p>d ：后面接的是重要的 data section 的相关参数值，主要的值有：<br>agcount=数值 ：设定需要几个储存群组的意思(AG)，通常与 CPU 有关<br>agsize=数值 ：每个 AG 设定为多少容量的意思，通常 agcount/agsize 只选一个设定即可<br>file ：指的是『格式化的装置是个文件而不是个装置』的意思！(例如虚拟磁盘)<br>size=数值 ：data section 的容量，亦即你可以不将全部的装置容量用完的意思<br>su=数值 ：当有 RAID 时，那个 stripe 数值的意思，与底下的 sw 搭配使用<br>sw=数值 ：当有 RAID 时，用于储存数据的磁盘数量(须扣除备份碟与备用碟)<br>sunit=数值 ：与 su 相当，不过单位使用的是『几个 sector(512bytes 大小)』的意思<br>swidth=数值 ：就是 su*sw 的数值，但是以『几个 sector(512bytes 大小)』来设定</p>
</li>
<li><p>f ：如果装置内已经有文件系统，则需要使用这个 -f 来强制格式化才行！</p>
</li>
<li><p>i ：与 inode 有较相关的设定，主要的设定值有：<br>size=数值 ：最小是 256bytes 最大是 2k，一般保留 256 就足够使用了！<br>internal=[0|1]：log 装置是否为内建？预设为 1 内建，如果要用外部装置，使用底下设定<br>logdev=device ：log 装置为后面接的那个装置上头的意思，需设定 internal=0 才可！<br>size=数值 ：指定这块登录区的容量，通常最小得要有 512 个 block，大约 2M 以上才行！</p>
</li>
<li><p>L ：后面接这个文件系统的标头名称 Label name 的意思！</p>
</li>
<li><p>r ：指定 realtime section 的相关设定值，常见的有：<br>extsize=数值 ：就是那个重要的 extent 数值，一般不须设定，但有 RAID 时，<br>最好设定与 swidth 的数值相同较佳！最小为 4K 最大为 1G 。</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- 其他</span><br></pre></td></tr></table></figure>
<p>范例：找出你系统的 CPU 数，并据以设定你的 agcount 数值<br>[root@study ~]#  grep  ‘processor’ /proc/cpuinfo<br>processor : 0<br>processor : 1</p>
<h1 id="所以就是有两颗-CPU-的意思，那就来设定设定我们的-xfs-文件系统格式化参数吧！！"><a href="#所以就是有两颗-CPU-的意思，那就来设定设定我们的-xfs-文件系统格式化参数吧！！" class="headerlink" title="所以就是有两颗 CPU 的意思，那就来设定设定我们的 xfs 文件系统格式化参数吧！！"></a>所以就是有两颗 CPU 的意思，那就来设定设定我们的 xfs 文件系统格式化参数吧！！</h1><p>[root@study ~]#  mkfs.xfs - - f - - d agcount=2 /dev/vda4<br>meta-data=/dev/vda4 isize=256 agcount=2, agsize=131072 blks<br>= sectsz=512 attr=2, projid32bit=1<br>= crc=0 finobt=0<br>…..(底下省略)…..</p>
<h1 id="可以跟前一个范例对照看看，可以发现-agcount-变成-2-了喔！"><a href="#可以跟前一个范例对照看看，可以发现-agcount-变成-2-了喔！" class="headerlink" title="可以跟前一个范例对照看看，可以发现 agcount 变成 2 了喔！"></a>可以跟前一个范例对照看看，可以发现 agcount 变成 2 了喔！</h1><h1 id="此外，因为已经格式化过一次，因此-mkfs-xfs-可能会出现不给你格式化的警告！因此需要使用-f"><a href="#此外，因为已经格式化过一次，因此-mkfs-xfs-可能会出现不给你格式化的警告！因此需要使用-f" class="headerlink" title="此外，因为已经格式化过一次，因此 mkfs.xfs 可能会出现不给你格式化的警告！因此需要使用 -f"></a>此外，因为已经格式化过一次，因此 mkfs.xfs 可能会出现不给你格式化的警告！因此需要使用 -f</h1><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">  - ext4 文件系统mkfs.ext4</span><br><span class="line"></span><br><span class="line">    - &#96;mkfs.ext4 [- - b size] [- - L label] 装 置名&#96;</span><br><span class="line"></span><br><span class="line">    选项与参数： -b ：设定 block 的大小，有 1K, 2K, 4K 的容量， -L ：后面接这个装置的标头名称</span><br><span class="line"></span><br><span class="line">  - 其他文件系统 mkfs</span><br><span class="line"></span><br><span class="line">- 文件系统检验</span><br><span class="line"></span><br><span class="line">  - &#96;xfs_repair&#96; 处理 XFS 文件系统</span><br><span class="line"></span><br><span class="line">    - &#96;xfs_repair [ - fnd] 装 置名&#96;</span><br></pre></td></tr></table></figure>
<p>选项与参数：</p>
</li>
<li><p>f ：后面的装置其实是个文件而不是实体装置</p>
</li>
<li><p>n ：单纯检查并不修改文件系统的任何数据 (检查而已)</p>
</li>
<li><p>d ：通常用在单人维护模式底下，针对根目录 (/) 进行检查与修复的动作！很危险！不要随便使用</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- 案例</span><br></pre></td></tr></table></figure>
<p>xfs_repair /dev/vda4</p>
<p>范例：检查一下系统原本就有的 /dev/centos/home 文件系统<br>[root@study ~]#  xfs_repair /dev/centos/home</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- fsck.ext4 处理 EXT4 文件系统</span><br></pre></td></tr></table></figure>
<p>fsck.ext4 [ - pf] [ - b superblock]  装 置名 称</p>
</li>
</ul>
<p>选项与参数：<br>-p ：当文件系统在修复时，若有需要回复 y 的动作时，自动回复 y 来继续进行修复动作。<br>-f ：强制检查！一般来说，如果 fsck 没有发现任何 unclean 的旗标，不会主动进入<br>细部检查的，如果您想要强制 fsck 进入细部检查，就得加上 -f 旗标啰！<br>-D ：针对文件系统下的目录进行优化配置。<br>-b ：后面接 superblock 的位置！一般来说这个选项用不到。但是如果你的 superblock 因故损毁时，<br>透过这个参数即可利用文件系统内备份的 superblock 来尝试救援。一般来说，superblock 备份在：<br>1K block 放在 8193, 2K block 放在 16384, 4K block 放在 32768</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- 只有在极度严重的问题才使用这些命令</span><br><span class="line"></span><br><span class="line">- 文件系统挂载与卸除</span><br><span class="line"></span><br><span class="line">- 前提</span><br><span class="line"></span><br><span class="line">  - 单一文件系统不应该被重复挂载在不同的挂载点(目录)中；</span><br><span class="line">  - 单一目录不应该重复挂载多个文件系统；</span><br><span class="line">  - 要作为挂载点的目录，理论上应该都是空目录才是。</span><br><span class="line"></span><br><span class="line">- 挂载方式</span><br><span class="line"></span><br><span class="line">  - 案例</span><br></pre></td></tr></table></figure>
<p>[root@study ~]#  mount - -a a<br>[root@study ~]#  mount [- - l]<br>[root@study ~]#  mount [- - t  文件系 统 ] LABEL=’’ 挂 载点<br>[root@study ~]#  mount [- - t  文件系 统 ] UUID=’’ 挂 载点 # 鸟哥近期建议用这种方式喔！<br>[root@study ~]#  mount [- - t  文件系 统 ]  装 置文件名 挂 载点<br>选项与参数：<br>-a ：依照配置文件 /etc/fstab 的数据将所有未挂载的磁盘都挂载上来<br>-l ：单纯的输入 mount 会显示目前挂载的信息。加上 -l 可增列 Label 名称！<br>-t ：可以加上文件系统种类来指定欲挂载的类型。常见的 Linux 支持类型有：xfs, ext3, ext4,<br>reiserfs, vfat, iso9660(光盘格式), nfs, cifs, smbfs (后三种为网络文件系统类型)<br>-n ：在默认的情况下，系统会将实际挂载的情况实时写入 /etc/mtab 中，以利其他程序的运作。<br>但在某些情况下(例如单人维护模式)为了避免问题会刻意不写入。此时就得要使用 -n 选项。<br>-o ：后面可以接一些挂载时额外加上的参数！比方说账号、密码、读写权限等：<br>async, sync: 此文件系统是否使用同步写入 (sync) 或异步 (async) 的<br>内存机制，请参考文件系统运作方式。预设为 async。<br>atime,noatime: 是否修订文件的读取时间(atime)。为了效能，某些时刻可使用 noatime<br>ro, rw: 挂载文件系统成为只读(ro) 或可擦写(rw)<br>auto, noauto: 允许此 filesystem 被以 mount -a 自动挂载(auto)<br>dev, nodev: 是否允许此 filesystem 上，可建立装置文件？ dev 为可允许<br>suid, nosuid: 是否允许此 filesystem 含有 suid/sgid 的文件格式？<br>exec, noexec: 是否允许此 filesystem 上拥有可执行 binary 文件？<br>user, nouser: 是否允许此 filesystem 让任何使用者执行 mount ？一般来说，<br>mount 仅有 root 可以进行，但下达 user 参数，则可让<br>一般 user 也能够对此 partition 进行 mount 。<br>defaults: 默认值为：rw, suid, dev, exec, auto, nouser, and async<br>remount: 重新挂载，这在系统出错，或重新更新参数时，很有用！</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">  - &#x2F;etc&#x2F;filesystems：系统指定的测试挂载文件系统类型的优先级；</span><br><span class="line">  - &#x2F;proc&#x2F;filesystems：Linux 系统已经加载的文件系统类型</span><br><span class="line"></span><br><span class="line">- 我们 Linux 支持的文件系统之驱动程序都写在如下的目录中</span><br><span class="line"></span><br><span class="line">  - &#96;&#x2F;lib&#x2F;modules&#x2F;$(uname -r)&#x2F;kernel&#x2F;fs&#x2F;&#96;</span><br><span class="line"></span><br><span class="line">- 挂载 xfs&#x2F;ext4&#x2F;vfat</span><br><span class="line"></span><br><span class="line">  - 范例</span><br></pre></td></tr></table></figure>
<p>范例：找出 /dev/vda4 的 UUID 后，用该 UUID 来挂载文件系统到 /data/xfs 内<br>[root@study ~]#  blkid /dev/vda4<br>/dev/vda4: UUID=”e0a6af55-26e7-4cb7-a515-826a8bd29e90” TYPE=”xfs”</p>
<p>[root@study ~]#  mount UUID=”e0a6af55- - 26e7- - 4cb7- - a515- - 826a8bd29e90” /data/xfs<br>mount: mount point /data/xfs does not exist # 非正规目录！所以手动建立它！<br>[root@study ~]#  mkdir - - p /data/xfs<br>[root@study ~]#  mount UUID=”e0a6af55- - 26e7- - 4cb7- - a515- - 826a8bd29e90” /data/xfs<br>[root@study ~]#  df /data/xfs<br>Filesystem 1K-blocks Used Available Use% Mounted on<br>/dev/vda4 1038336 32864 1005472 4% /data/xfs</p>
<h1 id="顺利挂载，且容量约为-1G-左右没问题！"><a href="#顺利挂载，且容量约为-1G-左右没问题！" class="headerlink" title="顺利挂载，且容量约为 1G 左右没问题！"></a>顺利挂载，且容量约为 1G 左右没问题！</h1><p>范例：使用相同的方式，将 /dev/vda5 挂载于 /data/ext4<br>[root@study ~]#  blkid /dev/vda5<br>/dev/vda5: UUID=”899b755b-1da4-4d1d-9b1c-f762adb798e1” TYPE=”ext4”<br>[root@study ~]#  mkdir /data/ext4<br>[root@study ~]#  mount UUID=”899b755b- - 1da4- - 4d1d- - 9b1c- - f762adb798e1” /data/ext4<br>[root@study ~]# </p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- 挂载 cd 或者 dvd</span><br></pre></td></tr></table></figure>
<p>范例：将你用来安装 Linux 的 CentOS 原版光盘拿出来挂载到 /data/cdrom！<br>[root@study ~]#  blkid<br>…..(前面省略)…..<br>/dev/sr0: UUID=”2015-04-01-00-21-36-00” LABEL=”CentOS 7 x86_64” TYPE=”iso9660” PTTYPE=”dos”<br>[root@study ~]#  mkdir /data/cdrom<br>[root@study ~]#  mount /dev/sr0 /data/cdrom<br>mount: /dev/sr0 is write-protected, mounting read-only<br>[root@study ~]#  df /data/cdrom<br>Filesystem 1K-blocks Used Available Use% Mounted on<br>/dev/sr0 7413478 7413478 0 100% /data/cdrom</p>
<h1 id="怎么会使用掉-100-呢？是啊！因为是-DVD-啊！所以无法再写入了啊！"><a href="#怎么会使用掉-100-呢？是啊！因为是-DVD-啊！所以无法再写入了啊！" class="headerlink" title="怎么会使用掉 100% 呢？是啊！因为是 DVD 啊！所以无法再写入了啊！"></a>怎么会使用掉 100% 呢？是啊！因为是 DVD 啊！所以无法再写入了啊！</h1><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- 挂载 vfat 中文随身碟 (USB</span><br><span class="line"></span><br><span class="line">  - 案例</span><br><span class="line">  - 注意：不能够是 NTFS 的文件系统</span><br></pre></td></tr></table></figure>
<p>范例：找出你的随身碟装置的 UUID，并挂载到 /data/usb 目录中<br>[root@study ~]#  blkid<br>/dev/sda1: UUID=”35BC-6D6B” TYPE=”vfat”<br>[root@study ~]#  mkdir /data/usb<br>[root@study ~]# mount - - o codepage=950,iocharset=utf8 UUID=”35BC- - 6D6B” /data/usb<br>[root@study ~]#  # mount - - o codepage=950,iocharset=big5 UUID=”35BC- - 6D6B” /data/usb<br>[root@study ~]#  df /data/usb<br>Filesystem 1K-blocks Used Available Use% Mounted on<br>/dev/sda1 2092344 4 2092340 1% /data/usb</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- 重新挂载根目录与挂载不特定目录</span><br><span class="line"></span><br><span class="line">  - 案例</span><br></pre></td></tr></table></figure>
<p>  范例：将 / 重新挂载，并加入参数为 rw 与 auto<br>  [root@study ~]# mount - - o remount,rw,auto /</p>
  <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"></span><br></pre></td></tr></table></figure>
<p>  范例：将 /var 这个目录暂时挂载到 /data/var 底下：<br>  [root@study ~]#  mkdir /data/var<br>  [root@study ~]#  mount  – bind /var /data/var<br>  [root@study ~]#  ls - - lid /var  /data/var<br>  16777346 drwxr-xr-x. 22 root root 4096 Jun 15 23:43 /data/var<br>  16777346 drwxr-xr-x. 22 root root 4096 Jun 15 23:43 /var</p>
<h1 id="内容完全一模一样啊！因为挂载目录的缘故！"><a href="#内容完全一模一样啊！因为挂载目录的缘故！" class="headerlink" title="内容完全一模一样啊！因为挂载目录的缘故！"></a>内容完全一模一样啊！因为挂载目录的缘故！</h1><p>  [root@study ~]#  mount | grep var</p>
  <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- umount ( 将装置 文件 卸除)</span><br><span class="line"></span><br><span class="line">  - 案例</span><br></pre></td></tr></table></figure>
<p>[root@study ~]#  umount [- - fn]  装 置文件名或挂 载点<br>选项与参数：<br>-f ：强制卸除！可用在类似网络文件系统 (NFS) 无法读取到的情况下；<br>-l ：立刻卸除文件系统，比 -f 还强！<br>-n ：不更新 /etc/mtab 情况下卸除。<br>就是直接将已挂载的文件系统给他卸除即是！卸除之后，可以使用 df 或 mount 看看是否还存在目<br>录树中？ 卸除的方式，可以下达装置文件名或挂载点，均可接受啦！底下的范例做看看吧！<br>范例：将本章之前自行挂载的文件系统全部卸除：<br>[root@study ~]#  mount<br>…..(前面省略)…..<br>/dev/vda4 on /data/xfs type xfs (rw,relatime,seclabel,attr2,inode64,logbsize=256k,sunit=512,..)<br>/dev/vda5 on /data/ext4 type ext4 (rw,relatime,seclabel,data=ordered)<br>/dev/sr0 on /data/cdrom type iso9660 (ro,relatime)<br>/dev/sda1 on /data/usb type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=950,iocharset=…)<br>/dev/mapper/centos-root on /data/var type xfs (rw,relatime,seclabel,attr2,inode64,noquota)</p>
<h1 id="先找一下已经挂载的文件系统，如上所示，特殊字体即为刚刚挂载的装置啰！"><a href="#先找一下已经挂载的文件系统，如上所示，特殊字体即为刚刚挂载的装置啰！" class="headerlink" title="先找一下已经挂载的文件系统，如上所示，特殊字体即为刚刚挂载的装置啰！"></a>先找一下已经挂载的文件系统，如上所示，特殊字体即为刚刚挂载的装置啰！</h1><h1 id="基本上，卸除后面接装置或挂载点都可以！不过最后一个-centos-root-由于有其他挂载，"><a href="#基本上，卸除后面接装置或挂载点都可以！不过最后一个-centos-root-由于有其他挂载，" class="headerlink" title="基本上，卸除后面接装置或挂载点都可以！不过最后一个 centos-root 由于有其他挂载，"></a>基本上，卸除后面接装置或挂载点都可以！不过最后一个 centos-root 由于有其他挂载，</h1><h1 id="因此，该项目一定要使用挂载点来卸除才行！"><a href="#因此，该项目一定要使用挂载点来卸除才行！" class="headerlink" title="因此，该项目一定要使用挂载点来卸除才行！"></a>因此，该项目一定要使用挂载点来卸除才行！</h1><p>[root@study ~]#  umount /dev/vda4 &lt;==用装置文件名来卸除<br>[root@study ~]#  umount /data/ext4 &lt;==用挂载点来卸除<br>[root@study ~]#  umount /data/cdrom &lt;==因为挂载点比较好记忆！<br>[root@study ~]#  umount /data/usb<br>[root@study ~]#  umount /data/var &lt;==一定要用挂载点！因为装置有被其他方式挂载</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- 磁盘 文件系统参数自定义</span><br><span class="line"></span><br><span class="line">  - mknod</span><br><span class="line"></span><br><span class="line">    - 就是透过文件的 major 与 minor 数值来替代的</span><br><span class="line">    - 手动处理装置文件案例</span><br></pre></td></tr></table></figure>
<p>[root@study ~]#  mknod  装 置文件名 [bcp] [Major] [Minor]<br>选项与参数：<br>装置种类：<br>b ：设定装置名称成为一个周边储存设备文件，例如磁盘等；<br>c ：设定装置名称成为一个周边输入设备文件，例如鼠标/键盘等；<br>p ：设定装置名称成为一个 FIFO 文件；<br>Major ：主要装置代码；<br>Minor ：次要装置代码；<br>范例：由上述的介绍我们知道 /dev/vda10 装置代码 252, 10，请建立并查阅此装置<br>[root@study ~]#  mknod /dev/vda10 b 252 10<br>[root@study ~]#  ll /dev/vda10<br>brw-r–r–. 1 root root 252, 10 Jun 24 23:40 /dev/vda10</p>
<h1 id="上面那个-252-与-10-是有意义的，不要随意设定啊！"><a href="#上面那个-252-与-10-是有意义的，不要随意设定啊！" class="headerlink" title="上面那个 252 与 10 是有意义的，不要随意设定啊！"></a>上面那个 252 与 10 是有意义的，不要随意设定啊！</h1><p>范例：建立一个 FIFO 文件，档名为 /tmp/testpipe<br>[root@study ~]#  mknod /tmp/testpipe p<br>[root@study ~]#  ll /tmp/testpipe<br>prw-r–r–. 1 root root 0 Jun 24 23:44 /tmp/testpipe</p>
<h1 id="注意啊！这个文件可不是一般文件，不可以随便就放在这里！"><a href="#注意啊！这个文件可不是一般文件，不可以随便就放在这里！" class="headerlink" title="注意啊！这个文件可不是一般文件，不可以随便就放在这里！"></a>注意啊！这个文件可不是一般文件，不可以随便就放在这里！</h1><h1 id="测试完毕之后请删除这个文件吧！看一下这个文件的类型！是-p-喔！"><a href="#测试完毕之后请删除这个文件吧！看一下这个文件的类型！是-p-喔！" class="headerlink" title="测试完毕之后请删除这个文件吧！看一下这个文件的类型！是 p 喔！^_^"></a>测试完毕之后请删除这个文件吧！看一下这个文件的类型！是 p 喔！^_^</h1><p>[root@study ~]#  rm /dev/vda10 /tmp/testpipe<br>rm: remove block special file ‘/dev/vda10’ ? y y<br>rm: remove fifo ‘/tmp/testpipe’ ? y y</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- xfs_admin 修改 XFS 文件系统的 UUID 与 Label name</span><br><span class="line"></span><br><span class="line">  - 案例</span><br></pre></td></tr></table></figure>
<p>  xfs_admin [-lu] [-L label] [-U uuid] 设备文件<br>  选项与参数：<br>  -l ：列出这个装置的 label name<br>  -u ：列出这个装置的 UUID<br>  -L ：设定这个装置的 Label name<br>  -U ：设定这个装置的 UUID 喔！</p>
  <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- tune2fs 修改 ext4 的 label name 与 UUID</span><br></pre></td></tr></table></figure>
<p>  [root@study ~]#  tune2fs [- - l] [- - L Label] [- - U uuid]  装 置文件名<br>  选项与参数：<br>  -l ：类似 dumpe2fs -h 的功能～将 superblock 内的数据读出来～<br>  -L ：修改 LABEL name<br>  -U ：修改 UUID 啰！<br>  范例：列出 /dev/vda5 的 label name 之后，将它改成 vbird_ext4<br>  [root@study ~]#  dumpe2fs - - h /dev/vda5 | grep name<br>  dumpe2fs 1.42.9 (28-Dec-2013)</p>
  <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- 设定开机挂载</span><br><span class="line"></span><br><span class="line">  - 系统挂载的一些限制</span><br><span class="line"></span><br><span class="line">    - 根目录 &#x2F; 是必须挂载的﹐而且一定要先于其它 mount point 被挂载进来。</span><br><span class="line">    - 其它 mount point 必须为已建立的目录﹐可任意指定﹐但一定要遵守必须的系统目录架构原则 (FHS)</span><br><span class="line">    - 所有 mount point 在同一时间之内﹐只能挂载一次。</span><br><span class="line">    - 所有 partition 在同一时间之内﹐只能挂载一次。</span><br><span class="line">    - 如若进行卸除﹐您必须先将工作目录移到 mount point(及其子目录) 之外</span><br><span class="line"></span><br><span class="line">  - 查看</span><br><span class="line"></span><br><span class="line">    - &#96;cat &#x2F;etc&#x2F;fstab&#96;</span><br><span class="line">    - 描述信息如下:</span><br></pre></td></tr></table></figure>
<p>  [装置/UUID 等] [挂载点] [文件系统] [文件系统参数] [dump] [fsck]</p>
  <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">      - 解释</span><br><span class="line">        - 第一栏：磁盘装置文件名&#x2F;UUID&#x2F;LABEL name：</span><br><span class="line">          - 文件系统或磁盘的装置文件名，如 &#x2F;dev&#x2F;vda2 等</span><br><span class="line">          - 文件系统的 UUID 名称，如 UUID&#x3D;xxx</span><br><span class="line">          - 文件系统的 LABEL 名称，例如 LABEL&#x3D;xxx</span><br><span class="line">        - 第二栏：挂载点 (mount point)：：</span><br><span class="line">        - 第三栏：磁盘分区槽的文件系统：</span><br><span class="line">        - 第四栏：文件系统参数：</span><br><span class="line">        - 第五栏：能否被 dump 备份指令作用：</span><br><span class="line">        - 第六栏：是否以 fsck 检验扇区：</span><br><span class="line"></span><br><span class="line">- 特殊装置 loop 挂载</span><br><span class="line"></span><br><span class="line">  - 挂载光盘&#x2F;DVD 映象文件</span><br><span class="line">  - 大型文件的格式化</span><br><span class="line">  - 挂载</span><br><span class="line"></span><br><span class="line">- 内存置换空间(swap)</span><br><span class="line"></span><br><span class="line">  - 使用实体 分区置 槽建置 swap</span><br><span class="line">    - 基本步骤</span><br><span class="line">      1. 分区：先使用 gdisk 在你的磁盘中分区出一个分区槽给系统作为 swap 。由于 Linux 的 gdisk 预设会将分 区槽的 ID 设定为 Linux 的文件系统，所以你可能还得要设定一下 system ID 就是了。</span><br><span class="line">      2. 格式化：利用建立 swap 格式的『mkswap 装置文件名』就能够格式化该分区槽成为 swap 格式啰</span><br><span class="line">      3. 使用：最后将该 swap 装置启动，方法为：『swapon 装置文件名』。</span><br><span class="line">      4. 观察：最终透过 free 与 swapon -s 这个指令来观察一下内存的用量吧！</span><br><span class="line"></span><br><span class="line">- 使用 文件置 建置 swap</span><br><span class="line"></span><br><span class="line">  - 透过一个案例学习</span><br><span class="line">    1. 使用 dd 这个指令来新增一个 128MB 的文件在 &#x2F;tmp 底下：</span><br><span class="line">    2. 使用 mkswap 将 &#x2F;tmp&#x2F;swap 这个文件格式化为 swap 的文件格式</span><br><span class="line">    3. 使用 swapon 来将 &#x2F;tmp&#x2F;swap 启动啰！</span><br><span class="line">    4. 使用 swapoff 关掉 swap file，并设定自动启用</span><br><span class="line"></span><br><span class="line">- 文件系统的特殊观察与操作</span><br><span class="line"></span><br><span class="line">  - 磁盘空间之浪费问题</span><br><span class="line">  - 利用 GNU 的 parted 进行 分区 行为(Optional)</span><br><span class="line">  - **parted 可以直接在一行指令列就完成分区，是一个非常好用的指令！它常用的语法如下：**</span><br></pre></td></tr></table></figure>
<p>[root@study ~]#  parted [ 装 置 ] [ 指令 [ [ 参数 ]]<br>选项与参数：<br>指令功能：<br>新增分区：mkpart [primary|logical|extended] [ext4|vfat|xfs] 开始 结束<br>显示分区：print<br>删除分区：rm [partition]<br>范例一：以 parted 列出目前本机的分区表资料<br>[root@study ~]#  parted /dev/vda  print<br>Model: Virtio Block Device (virtblk) &lt;==磁盘接口与型号<br>Disk /dev/vda: 42.9GB &lt;==磁盘文件名与容量<br>Sector size (logical/physical): 512B/512B &lt;==每个扇区的大小<br>Partition Table: gpt &lt;==是 GPT 还是 MBR 分区<br>Disk Flags: pmbr_boot<br>Number Start End Size File system Name Flags<br>1 1049kB 3146kB 2097kB bios_grub<br>2 3146kB 1077MB 1074MB xfs<br>3 1077MB 33.3GB 32.2GB lvm<br>4 33.3GB 34.4GB 1074MB xfs Linux filesystem<br>5 34.4GB 35.4GB 1074MB ext4 Microsoft basic data<br>6 35.4GB 36.0GB 537MB linux-swap(v1) Linux swap<br>[ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- 显示参数的意义</span><br></pre></td></tr></table></figure></li>
</ul>
<ol>
<li>Number：这个就是分区槽的号码啦！举例来说，1 号代表的是 /dev/vda1 的意思；</li>
<li>Start：分区的起始位置在这颗磁盘的多少 MB 处？有趣吧！他以容量作为单位喔！</li>
<li>End：此分区的结束位置在这颗磁盘的多少 MB 处？</li>
<li>Size：由上述两者的分析，得到这个分区槽有多少容量；</li>
<li>File system：分析可能的文件系统类型为何的意思！</li>
<li>Name：就如同 gdisk 的 System ID 之意。<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">  - 案例</span><br><span class="line">    - 使用parted 将 mbr 分区表改成 gpt</span><br><span class="line">      - 非常危险，无法还原</span><br><span class="line"></span><br><span class="line">## 第八章 文件和文件系统的压缩</span><br><span class="line"></span><br><span class="line">- 压缩文件的用途和技术</span><br><span class="line"></span><br><span class="line">- Linux 常见的压缩命令</span><br><span class="line"></span><br><span class="line">  - gzip ， zcat 、zmore、zless、zgrep</span><br><span class="line"></span><br><span class="line">    - 语法</span><br><span class="line"></span><br><span class="line">      - &#96;gzip [-cdtv] 文件名&#96;</span><br><span class="line">      - &#96;zcat 文件名.gz&#96;</span><br></pre></td></tr></table></figure>
 选项与参数：<br> -c ：将压缩的数据输出到屏幕上，可透过数据流重导向来处理；<br> -d ：解压缩的参数；<br> -t ：可以用来检验一个压缩文件的一致性～看看文件有无错误；<br> -v ：可以显示出原文件/压缩文件案的压缩比等信息；<br> -# ：# 为数字的意思，代表压缩等级，-1 最快，但是压缩比最差、-9 最慢，但是压缩比最好！预设是 -6 <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">    - &#96;egrep&#96; 查找</span><br><span class="line"></span><br><span class="line">  - bzip2, bzcat&#x2F;bzmore&#x2F;bzless&#x2F;bzgrep</span><br><span class="line"></span><br><span class="line">  - 对于gzip 的升级</span><br><span class="line"></span><br><span class="line">  - 优点</span><br><span class="line"></span><br><span class="line">    - 比gzip 压缩率更好</span><br><span class="line"></span><br><span class="line">  - 缺点</span><br><span class="line"></span><br><span class="line">    - 时间要更久</span><br><span class="line"></span><br><span class="line">  - xz, xzcat&#x2F;xzmore&#x2F;xzless&#x2F;xzgrep</span><br><span class="line"></span><br><span class="line">    - 优点</span><br><span class="line">      - 比bzip2 压缩率还要好</span><br><span class="line">    - 缺点</span><br><span class="line">      - 很慢</span><br><span class="line"></span><br><span class="line">- 打包命令（常用）</span><br><span class="line"></span><br><span class="line">  - 选项和参数</span><br></pre></td></tr></table></figure>
选项与参数：</li>
</ol>
<p>-c ：建立打包文件，可搭配 -v 来察看过程中被打包的档名(filename)<br>-t ：察看打包文件的内容含有哪些档名，重点在察看『档名』就是了；<br>-x ：解打包或解压缩的功能，可以搭配 -C (大写) 在特定目录解开<br>特别留意的是， -c, -t, -x 不可同时出现在一串指令列中。<br>-z ：透过 gzip 的支持进行压缩/解压缩：此时档名最好为 *.tar.gz<br>-j ：透过 bzip2 的支持进行压缩/解压缩：此时档名最好为 *.tar.bz2<br>-J ：透过 xz 的支持进行压缩/解压缩：此时档名最好为 *.tar.xz<br>特别留意， -z, -j, -J 不可以同时出现在一串指令列中<br>-v ：在压缩/解压缩的过程中，将正在处理的文件名显示出来！<br>-f filename：-f 后面要立刻接要被处理的档名！建议 -f 单独写一个选项啰！(比较不会忘记)<br>-C 目录 ：这个选项用在解压缩，若要在特定目录解压缩，可以使用这个选项。<br>其他后续练习会使用到的选项介绍：<br>-p(小写) ：保留备份数据的原本权限与属性，常用于备份(-c)重要的配置文件<br>-P(大写) ：保留绝对路径，亦即允许备份数据中含有根目录存在之意；<br>–exclude=FILE：在压缩的过程中，不要将 FILE 打包！</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- 常用如下命令</span><br><span class="line"></span><br><span class="line">  - 压缩&#96;tar -jcv -f filename.tar.bz2 文件或者目录名称&#96;</span><br><span class="line">  - 查询 &#96;tar -jtv filename.tar.bz2&#96;</span><br><span class="line">  - 解压缩 &#96;tar -jxv -f filename.tar.bz2 要解压的地方&#96;</span><br><span class="line"></span><br><span class="line">- 案例</span><br><span class="line"></span><br><span class="line">  - 压缩 &#x2F;etc 下面的文件，查看优点特殊的地方</span><br><span class="line">  - 为什么要去掉 &#x2F; 根目录路径？</span><br><span class="line">  - 如果要tar 里面加上这个根路径，要怎么做？</span><br><span class="line">  - 备份数据解压缩，并且到特定的目录下面</span><br><span class="line">    - 如何指定要解开的目录</span><br><span class="line"></span><br><span class="line">- 只解开单一文件的办法</span><br><span class="line"></span><br><span class="line">  - 先查找文档名称</span><br><span class="line">    - &#96;tar - - jtv - - f &#x2F;root&#x2F;etc.tar.bz2 | grep &#39;shadow&#39;&#96;</span><br><span class="line"></span><br><span class="line">- 打包某目录，但不含该目录下的某些 文件</span><br><span class="line"></span><br><span class="line">  - --exclude 参数用法</span><br><span class="line"></span><br><span class="line">- 仅备份比某个时刻还要新的 文件</span><br><span class="line"></span><br><span class="line">  - 先使用搜索找到对应的文件</span><br><span class="line">  - &#96;tar -jcv -f &#x2F;root&#x2F;etc.newer.then.passwd.tar.bz2 --newer-mtime&#x3D;&quot;2015&#x2F;06&#x2F;07&quot; &#x2F;etc&#x2F;*&#96;</span><br><span class="line"></span><br><span class="line">- 利用管道一遍打包一遍备份</span><br><span class="line"></span><br><span class="line">  -</span><br></pre></td></tr></table></figure>
<pre><code>tar -cvf - /etc | tar -xvf -
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">      - 注意 - 代表输入和输出</span><br><span class="line"></span><br><span class="line">  - 例题：系统备份的案例</span><br><span class="line"></span><br><span class="line">    - 结合上面所学。使用过滤方式备份数据</span><br><span class="line"></span><br><span class="line">  - 解压缩后的 SELinux</span><br><span class="line"></span><br><span class="line">    - 可能影响系统配置</span><br><span class="line"></span><br><span class="line">- XFS 文件系统的备份与还原</span><br><span class="line"></span><br><span class="line">  - 使用备份命令 xfs_dump</span><br><span class="line"></span><br><span class="line">    - 备份行为可以累积，类似SVN的手法，新建备份只新增差异文件</span><br><span class="line">    - 限制</span><br><span class="line">      - 文件系统必须挂载</span><br><span class="line">      - xfsdump 必须使用 root 的权限才能操作 (涉及文件系统的关系)</span><br><span class="line">      - xfsdump 只能备份 XFS 文件系统啊！</span><br><span class="line">      - xfsdump 备份下来的数据 (文件或储存媒体) 只能让 xfsrestore 解析</span><br><span class="line">      - xfsdump 是透过文件系统的 **UUID** 来分辨各个备份档的，因此不能备份两个具有相同 UUID 的文件系统 喔！</span><br><span class="line">      - **xfsdump 预设仅支持文件系统的备份，并不支持特定目录的备份**</span><br><span class="line"></span><br><span class="line">  - 使用方法</span><br><span class="line"></span><br><span class="line">    - &#96;xfsdump [- - L S_label] [- - M M_label] [- - l #] [- - f 备 份 档 ] 待 备 份 资&#96;</span><br><span class="line">    - 选项和参数</span><br></pre></td></tr></table></figure></code></pre><p>  选项与参数：<br>  -L ：xfsdump 会纪录每次备份的 session 标头，这里可以填写针对此文件系统的简易说明<br>  -M ：xfsdump 可以纪录储存媒体的标头，这里可以填写此媒体的简易说明<br>  -l ：是 L 的小写，就是指定等级～有 0~9 共 10 个等级喔！ (预设为 0，即完整备份)<br>  -f ：有点类似 tar 啦！后面接产生的文件，亦可接例如 /dev/st0 装置文件名或其他一般文件档名等<br>  -I ：从 /var/lib/xfsdump/inventory 列出目前备份的信息状态</p>
  <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">    - 案例</span><br><span class="line">    - 累积备份</span><br><span class="line"></span><br><span class="line">- XFS 文件系统还原 xfsrestore</span><br><span class="line"></span><br><span class="line">  - 占位，等安装对应系统再来</span><br><span class="line"></span><br><span class="line">- 用 xfsrestore 观察 xfsdump</span><br><span class="line"></span><br><span class="line">  - 简单复原 level 0 的文件系统</span><br><span class="line">  - 复原累积备份资料</span><br><span class="line">  - 仅还原部分 文件的 的 xfsrestore 互动模式</span><br><span class="line"></span><br><span class="line">- 光盘写入工具</span><br><span class="line"></span><br><span class="line">  - 了解即可</span><br><span class="line"></span><br><span class="line">- 其他常见的压缩和备份工具</span><br><span class="line"></span><br><span class="line">  - dd</span><br><span class="line"></span><br><span class="line">    - 作用</span><br><span class="line">      - dd 可以读取磁盘装置的内容，然后将整个装置备份成一个文件呢</span><br><span class="line">    - 使用方法</span><br><span class="line">      - &#96;dd if&#x3D;&quot;input_file&quot; of&#x3D;&quot;output_file&quot; bs&#x3D;&quot;block_size&quot; count&#x3D;&quot;number&quot;&#96;</span><br><span class="line">    - 选项和参数</span><br></pre></td></tr></table></figure>
<p>  选项与参数：<br>  if ：就是 input file 啰～也可以是装置喔！<br>  of ：就是 output file 喔～也可以是装置；<br>  bs ：规划的一个 block 的大小，若未指定则预设是 512 bytes(一个 sector 的大小)<br>  count：多少个 bs 的意思。</p>
  <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- 案例</span><br><span class="line">  - 范例一：将 &#x2F;etc&#x2F;passwd 备份到 &#x2F;tmp&#x2F;passwd.back 当中</span><br><span class="line">    - &#96;dd if&#x3D;&#x2F;etc&#x2F;passwd of&#x3D;&#x2F;tmp&#x2F;passwd.back&#96;</span><br><span class="line">  - 范例二：将刚刚刻录的光驱的内容，再次的备份下来成为映像挡</span><br><span class="line">  - 范例三：假设你的 USB 是 &#x2F;dev&#x2F;sda 好了，请将刚刚范例二的 image 刻录到 USB 磁盘中</span><br><span class="line">  - 范例四：将你的 &#x2F;boot 整个文件系统透过 dd 备份下来</span><br><span class="line">- 例题：</span><br></pre></td></tr></table></figure>
<p>  你想要将你的 /dev/vda2 进行完整的复制到另一个 partition 上，请使用你的系统上面未分区完毕的容量再建立一<br>  个与 /dev/vda2 差不多大小的分区槽 (只能比 /dev/vda2 大，不能比他小！)，然后将之进行完整的复制 (包括需<br>  要复制 boot sector 的区块)。<br>  答：<br>  因为我们的 /dev/sda 也是个测试的 USB 磁盘，可以随意恶搞！我们刚刚也才测试过将光盘映像文件给它复制进<br>  去而已。 现在，请你分区 /dev/sda1 出来，然后将 /dev/vda2 完整的拷贝进去 /dev/sda1 吧！</p>
  <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">    - 注意点</span><br><span class="line">      - 需要注意dd 连同 uuid 一起复制，如果要复制两块完全相同的硬盘，需要重新定义一下 uuid</span><br><span class="line"></span><br><span class="line">- cpio</span><br><span class="line"></span><br><span class="line">  - 作用</span><br><span class="line">    - cpio 可以备份任何东西，包括装置设备文件</span><br><span class="line">    - 暂时只记住语法即可</span><br><span class="line">  - 缺点</span><br><span class="line">    - 不会主动去找文件，需要find 找到文件才能备份</span><br><span class="line">  - 语法</span><br></pre></td></tr></table></figure>
<p>[root@study ~]#  cpio - - ovcB &gt; [file|device] &lt;==备份<br>[root@study ~]#  cpio - - ivcdu &lt; [file|device] &lt;==还原<br>[root@study ~]#  cpio - - ivct &lt; [file|device] &lt;==察看<br>备份会使用到的选项与参数：<br>-o ：将数据 copy 输出到文件或装置上<br>-B ：让预设的 Blocks 可以增加至 5120 bytes ，预设是 512 bytes ！<br>这样的好处是可以让大文件的储存速度加快(请参考 i-nodes 的观念)<br>还原会使用到的选项与参数：<br>-i ：将数据自文件或装置 copy 出来系统当中<br>-d ：自动建立目录！使用 cpio 所备份的数据内容不见得会在同一层目录中，因此我们<br>必须要让 cpio 在还原时可以建立新目录，此时就得要 -d 选项的帮助！<br>-u ：自动的将较新的文件覆盖较旧的文件！<br>-t ：需配合 -i 选项，可用在”察看”以 cpio 建立的文件或装置的内容<br>一些可共享的选项与参数：<br>-v ：让储存的过程中文件名可以在屏幕上显示<br>-c ：一种较新的 portable format 方式储存</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">### 练习题</span><br><span class="line"></span><br><span class="line">- 情境模拟题一：请将本章练习过程中产生的不必要的文件删除，以保持系统容量不要被恶搞！</span><br><span class="line"></span><br><span class="line">- 情境模拟题二：你想要逐时备份 &#x2F;home 这个目录内的数据，又担心每次备份的信息太多， 因此想要使用 xfsdump 的方式来逐一备份数据到 &#x2F;backups 这个目录下。该如何处理？ o 目标：了解到 xfsdump 以及各个不同 level 的作用； o 前提：被备份的资料为单一 partition ，亦即本例中的 &#x2F;home 实际处理的方法其实还挺简单的！我们可以这样做看看：</span><br><span class="line"></span><br><span class="line">- 情境模拟三：假设过了一段时间后，妳的 &#x2F;home 变的怪怪的，妳想要将该 filesystem 以刚刚的备份数据还 原， 此时该如何处理呢？妳可以这样做的：</span><br><span class="line"></span><br><span class="line">  ​	由于 &#x2F;home 这个 partition 是用户只要有登入就会使用，因此你应该无法卸除这个东西！因此，你必 须要注销所有一般用户， 然后在 tty2 直接以 root 登入系统，不要使用一般账号来登入后 su 转成 root ！ 这样才有办法卸除 &#x2F;home 喔！</span><br><span class="line"></span><br><span class="line">## 第九章 Vim编辑器</span><br><span class="line"></span><br><span class="line">- vi 和 vim</span><br><span class="line"></span><br><span class="line">- 为什么要学习vi 和vim</span><br><span class="line"></span><br><span class="line">  - 内置命令会使用</span><br><span class="line">  - unix 基本都会自带</span><br><span class="line">  - 方便简单</span><br><span class="line">  - 功能强大</span><br><span class="line"></span><br><span class="line">- vi使用方法</span><br><span class="line"></span><br><span class="line">  - 三种模式</span><br><span class="line">    - 一般命令模式</span><br><span class="line">      - </span><br><span class="line">    - 编辑模式</span><br><span class="line">    - 命令行模式</span><br><span class="line"></span><br><span class="line">- 注意</span><br><span class="line"></span><br><span class="line">  - 一般指令模式可与编辑模式及指令列模式切换， 但编辑模式与指令列 模式之间不可互相切换喔</span><br><span class="line"></span><br><span class="line">- 简单案例</span><br><span class="line"></span><br><span class="line">  - 使用『 vi filename 』进入一般指令模式</span><br><span class="line">  - 使用 i 进入编辑模式</span><br><span class="line">  - 使用esc 退出到一般命令模式</span><br><span class="line">  - &#96;:wq&#96; 进行保存</span><br><span class="line"></span><br><span class="line">- 常用操作</span><br><span class="line"></span><br><span class="line">  - 一般模式</span><br><span class="line"></span><br><span class="line">    - hjkl 可以进行上下左右的移动</span><br><span class="line">    - &#96;ctrl + f&#96; 和&#96;ctrl + b&#96; 上下移动一页</span><br><span class="line">    - &#x2F; 查找 继续按下n继续查找</span><br><span class="line">    - 0 或者 home</span><br><span class="line">    - $ 或者 end</span><br><span class="line">    - gg 跳到第一行</span><br><span class="line">    - n(数字) enter 光标下移 N 行</span><br><span class="line">    - :n1,n2s&#x2F;word1&#x2F;word2&#x2F;g</span><br><span class="line">      - n1 与 n2 为数字。在第 n1 与 n2 列之间寻找 word1 这个字符串，并将该字符串取代 为 word2 ！举例来说，在 100 到 200 列之间搜寻 vbird 并取代为 VBIRD 则： 『:100,200s&#x2F;vbird&#x2F;VBIRD&#x2F;g』。(常用)</span><br><span class="line">    - :1,$s&#x2F;word1&#x2F;word2&#x2F;gc</span><br><span class="line">      - 从第一列到最后一列寻找 word1 字符串，并将该字符串取代为 word2 ！且在取代前显 示提示字符给用户确认 (confirm) 是否需要取代！(常用)</span><br><span class="line">    - :1,$s&#x2F;word1&#x2F;word2&#x2F;g</span><br><span class="line">      - 从第一列到最后一列寻找 word1 字符串，并将该字符串取代为 word2 ！(常用)</span><br><span class="line">    - x 退出但是不改变时间</span><br><span class="line">    - dd 删除一行</span><br><span class="line">    - yy 复制一行</span><br><span class="line">    - nyy 复制多行 如3yy</span><br><span class="line">    - u 恢复前一个操作</span><br><span class="line">    - ctrl + r 重做上一个动作</span><br><span class="line">    - . 重复上一个动作</span><br><span class="line"></span><br><span class="line">  - 编辑模式</span><br><span class="line"></span><br><span class="line">    - i I 插入模式</span><br><span class="line">      - i 为『从目前光标所在处插入』</span><br><span class="line">      - I 为『在目前所在列的第一个非空格符处开始插入】</span><br><span class="line">    - a 和 A</span><br><span class="line">      - a 为『从目前光标所在的下一个字符处开始插入』</span><br><span class="line">      - A 为『从光标所在列的最后一个字符处开始插入』</span><br><span class="line">    - o 和 O</span><br><span class="line">    - r 和 R</span><br><span class="line"></span><br><span class="line">  - 命令模式</span><br><span class="line"></span><br><span class="line">    - w</span><br><span class="line">    - q</span><br><span class="line">    - !</span><br><span class="line"></span><br><span class="line">  - 实际案例</span><br></pre></td></tr></table></figure>
<ol>
<li><p>请在 /tmp 这个目录下建立一个名为 vitest 的目录；</p>
</li>
<li><p>进入 vitest 这个目录当中；</p>
</li>
<li><p>将 /etc/man_db.conf 复制到本目录底下(或由上述的连结下载 man_db.conf 文件)；</p>
</li>
<li><p>使用 vi 开启本目录下的 man_db.conf 这个文件；</p>
</li>
<li><p>在 vi 中设定一下行号；</p>
</li>
<li><p>移动到第 43 列，向右移动 59 个字符，请问你看到的小括号内是哪个文字？</p>
</li>
<li><p>移动到第一列，并且向下搜寻一下『 gzip 』这个字符串，请问他在第几列？</p>
</li>
<li><p>接着下来，我要将 29 到 41 列之间的『小写 man 字符串』改为『大写 MAN 字符串』，并且一个一个挑<br>选是否需要修改，如何下达指令？如果在挑选过程中一直按『y』， 结果会在最后一列出现改变了几个 man<br>呢？</p>
</li>
<li><p>修改完之后，突然反悔了，要全部复原，有哪些方法？</p>
</li>
<li><p>我要复制 66 到 71 这 6 列的内容(含有 MANDB_MAP)，并且贴到最后一列之后；</p>
</li>
<li><p>113 到 128 列之间的开头为 # 符号的批注数据我不要了，要如何删除？</p>
</li>
<li><p>将这个文件另存成一个 man.test.config 的檔名；</p>
</li>
<li><p>去到第 25 列，并且删除 15 个字符，结果出现的第一个单字是什么？</p>
</li>
<li><p>在第一列新增一列，该列内容输入『I am a student…』；</p>
</li>
<li><p>储存后离开吧！</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">  - vim 缓存处理办法</span><br><span class="line"></span><br><span class="line">    - 问题</span><br><span class="line">      - 问题一：可能有其他人或程序同时在编辑这个文件：</span><br><span class="line">      - 问题二：在前一个 vim 的环境中，可能因为某些不知名原因导致 vim 中断 (crashed)：</span><br><span class="line"></span><br><span class="line">- vim 的额外功能</span><br><span class="line"></span><br><span class="line">- 可视区块</span><br><span class="line"></span><br><span class="line">  - v 开始反白</span><br><span class="line">  - V 行反白</span><br><span class="line">  - y 反白复制</span><br><span class="line">  - d 反白删除</span><br><span class="line"></span><br><span class="line">- 多文件编辑</span><br><span class="line"></span><br><span class="line">  - :n 编辑下一个文件</span><br><span class="line">  - :N 编辑上一个文件</span><br><span class="line">  - :files 列出目前这个vim 开启的所有文件</span><br><span class="line">  - 案例</span><br><span class="line">    - 多文件编辑</span><br><span class="line"></span><br><span class="line">- 多窗口功能</span><br><span class="line"></span><br><span class="line">  - :sp &#123;filename&#125;</span><br><span class="line">    - 存在文件名对比文件，</span><br><span class="line">    - 否则新建一个窗口用于对比</span><br><span class="line">  - 利用 ctrl + w + 上 或者 ctrl + w + 下 来切换窗口</span><br><span class="line"></span><br><span class="line">- vim 关键词补全</span><br><span class="line"></span><br><span class="line">  - 快捷键使用</span><br><span class="line">    - [ctrl]+x -&gt; [ctrl]+n 透过目前正在编辑的这个『文件的内容文字』作为关键词，予以补齐</span><br><span class="line">    - [ctrl]+x -&gt; [ctrl]+f 以当前目录内的『文件名』作为关键词，予以补齐</span><br><span class="line">    - [ctrl]+x -&gt; [ctrl]+o 以扩展名作为语法补充，以 vim 内建的关键词，予以补齐</span><br><span class="line"></span><br><span class="line">- vim 环境设定与记录： ~&#x2F;.vimrc, ~&#x2F;.viminfo</span><br><span class="line"></span><br><span class="line">- vim 常用图</span><br><span class="line"></span><br><span class="line">  - 查看图片</span><br><span class="line"></span><br><span class="line">- 其他vim 注意事项</span><br><span class="line"></span><br><span class="line">  - 中文乱码</span><br><span class="line">  - dos 和 linux 换行</span><br><span class="line">    - dos2nnix</span><br><span class="line">    - unix2dos</span><br><span class="line"></span><br><span class="line">- 语系编码转换</span><br><span class="line"></span><br><span class="line">  - &#96;iconv -f big5 -t utf8 vi.big5 -o vi.utf8&#96;</span><br><span class="line">  - &#96;iconv -f utf8 -t big5 vi utf8 | \&#96;</span><br><span class="line"></span><br><span class="line">### 练习题</span><br><span class="line"></span><br><span class="line">- 在第七章的情境模拟题二的第五点，编写 &#x2F;etc&#x2F;fstab 时，当时使用 nano 这个指令， 请尝试使用 vim 去编 辑 &#x2F;etc&#x2F;fstab ，并且将第七章新增的那一列的 defatuls 改成 default ，会出现什么状态？ 离开前请务必要 修订成原本正确的信息。此外，如果将该列批注 (最前面加 #)，你会发现字体颜色也有变化喔！</span><br><span class="line">- 尝试在你的系统中，你惯常使用的那个账号的家目录下，将本章介绍的 vimrc 内容进行一些常用设定，包 括： o 设定搜寻高亮度反白 o 设定语法检验启动 o 设定默认启动行号显示 o 设定有两行状态栏 (一行状态+一行指令列) :set laststatus&#x3D;2</span><br><span class="line"></span><br><span class="line">### 简答题</span><br><span class="line"></span><br><span class="line"># 第十章 认识 BASH 这个 Shell</span><br><span class="line"></span><br><span class="line">- 简单认识shell</span><br><span class="line"></span><br><span class="line">  - 什么是shell?</span><br><span class="line">    - 广义：就是指可以调动内核和硬件打交道的一个壳程序</span><br><span class="line">    - 狭义：通过内核指挥硬件工作的命令程序</span><br><span class="line">  - 为什么要学习shell？</span><br><span class="line">    - 防止突发情况</span><br><span class="line">    - 个人提升</span><br><span class="line">    - 公司要求</span><br><span class="line">    - 某些特殊情况只能使用shell去解决</span><br><span class="line">  - 不学习shell会怎么样</span><br><span class="line">    - 使用 x windows</span><br><span class="line">    - 使用第三方应用程序</span><br><span class="line">  - 如何学习shell</span><br><span class="line">    - 多敲</span><br><span class="line">    - 多练</span><br><span class="line">    - 多模拟场景</span><br><span class="line">      - 定期清理过期日志</span><br><span class="line">      - 开启启动某些应用程序</span><br><span class="line">      - 磁盘预警</span><br><span class="line"></span><br><span class="line">- 系统合法的shell 和 &#x2F;etc&#x2F;shells 功能</span><br><span class="line"></span><br><span class="line">  - cshell 和 bshell (bash)</span><br><span class="line">  - 检查&#x2F;etc&#x2F;shell 可以得到系统可使用的shell</span><br><span class="line">    - &#x2F;bin&#x2F;sh</span><br><span class="line">    - &#x2F;bin&#x2F;bash 默认</span><br><span class="line">    - &#x2F;bin&#x2F;tcsh</span><br><span class="line">    - &#x2F;bin&#x2F;csh</span><br><span class="line"></span><br><span class="line">- bash的功能</span><br><span class="line"></span><br><span class="line">  - history 历史功能</span><br><span class="line">    - 记录的位置：家目录的 .bash_history</span><br><span class="line">      - 注意：按照登陆来记录，记录上次登陆的命令，本次的被存在缓存</span><br><span class="line">  - 补全功能</span><br><span class="line">    - 确定命令正确</span><br><span class="line">  - 命令别名</span><br><span class="line">    - alias</span><br><span class="line">      - 简单用：&#96;alias lm &#x3D;&#39;ls -al&#39;&#96;</span><br><span class="line">  - 通配符</span><br><span class="line"></span><br><span class="line">- 判断命令是否为 Bash shell 内置 ： &#96;type&#96;</span><br><span class="line"></span><br><span class="line">  - &#96;man bash&#96;</span><br><span class="line">  - type 基本使用</span><br><span class="line">    - &#96;type -t umask&#96;</span><br><span class="line">  - 命令快捷键：常用</span><br><span class="line">    - ctrl + u 和 ctrl + k</span><br><span class="line">    - ctrl + a 和 ctrl + e</span><br><span class="line"></span><br><span class="line">- shell 基本内容学习</span><br><span class="line"></span><br><span class="line">  - 变量定义</span><br><span class="line">    - echo 和 unset</span><br><span class="line">      - 案例:</span><br><span class="line">        - &#96;echo $HOME&#96;</span><br><span class="line">        - 设置：变量 &#96;echo $&#123;myname&#125;&#96;</span><br><span class="line">      - 特殊点</span><br><span class="line">        - echo 默认变量为“空”</span><br><span class="line">    - 设置规则</span><br><span class="line">      - 双引号和单引号的区别</span><br><span class="line">    - 案例</span><br><span class="line">      - 如何进入到内核的目录模块</span><br><span class="line">        - &#96;cd &#x2F;lib&#x2F;moudules&#x2F;$(name -r)&#x2F;kernel&#96;</span><br><span class="line">  - 变量取消</span><br><span class="line">    - unset name</span><br><span class="line"></span><br><span class="line">- 环境变量设置</span><br><span class="line"></span><br><span class="line">  - env 查看环境变量</span><br><span class="line"></span><br><span class="line">  - declare 定义变量的另一种方式，声明变量</span><br><span class="line"></span><br><span class="line">    - declare -i number&#x3D;$RANDOM*10&#x2F;32768 ; echo $number</span><br><span class="line">      - 随机生成一个数字</span><br><span class="line"></span><br><span class="line">  - set 观察和设置自定义变量</span><br><span class="line"></span><br><span class="line">  - PS1 提示字符</span><br><span class="line"></span><br><span class="line">    - 有许多的定义，具体可以查看对应的百度内容</span><br><span class="line"></span><br><span class="line">    - https:&#x2F;&#x2F;blog.csdn.net&#x2F;qq_34208467&#x2F;article&#x2F;details&#x2F;81019467</span><br><span class="line"></span><br><span class="line">    - 参数意义</span><br></pre></td></tr></table></figure>
<p>  \d ：可显示出『星期 月 日』的日期格式，如：”Mon Feb 2”<br>  \H ：完整的主机名。举例来说，鸟哥的练习机为『study.centos.vbird』<br>  \h ：仅取主机名在第一个小数点之前的名字，如鸟哥主机则为『study』后面省略<br>  \t ：显示时间，为 24 小时格式的『HH:MM:SS』<br>  \T ：显示时间，为 12 小时格式的『HH:MM:SS』<br>  \A ：显示时间，为 24 小时格式的『HH:MM』<br>  @ ：显示时间，为 12 小时格式的『am/pm』样式<br>  \u ：目前使用者的账号名称，如『dmtsai』；<br>  \v ：BASH 的版本信息，如鸟哥的测试主机版本为 4.2.46(1)-release，仅取『4.2』显示<br>  \w ：完整的工作目录名称，由根目录写起的目录名称。但家目录会以 ~ 取代；<br>  \W ：利用 basename 函数取得工作目录名称，所以仅会列出最后一个目录名。<br>  # ：下达的第几个指令。<br>  $ ：提示字符，如果是 root 时，提示字符为 # ，否则就是 $ 啰～</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- $</span><br><span class="line"></span><br><span class="line">  - 查看PID :&#96;&#96;</span><br><span class="line"></span><br><span class="line">- ?</span><br><span class="line"></span><br><span class="line">  - 代表着上一个命令的返回值</span><br><span class="line">  - 如何理解？</span><br><span class="line">    - 一般命令执行之后会有一个0和非0的值，如果是0代表执行成功</span><br><span class="line">    - 非0则代表失败</span><br><span class="line"></span><br><span class="line">- export 自定义环境变量</span><br><span class="line"></span><br><span class="line">  - env 和 set有什么区别？</span><br><span class="line">    - env 是父进程环境变量</span><br><span class="line">    - set 可以是子进程变量</span><br><span class="line">    - **子进程仅仅继承父进程的环境变量，不继承自定义变量**</span><br><span class="line">  - 使用export 可以让自定义变量变成环境变量</span><br><span class="line"></span><br><span class="line">- declare 环境变量转自定义变量</span><br><span class="line"></span><br><span class="line">- 语系变量</span><br><span class="line"></span><br><span class="line">  - locale -a 查看系统支持的所有语言</span><br><span class="line"></span><br><span class="line">- 变量有效范围</span><br><span class="line"></span><br><span class="line">  - 变量键盘读取和数组声明：read 、array、declare</span><br><span class="line">  - read</span><br><span class="line">    - 作用</span><br><span class="line">      - 等待键盘输入</span><br><span class="line">    - 参数</span><br><span class="line">      - -p 提示字符</span><br><span class="line">      - -t 等待秒数</span><br><span class="line">  - declare ， typeset</span><br><span class="line">    - 作用</span><br><span class="line">      - 声明变量类型</span><br><span class="line">        - -a 定义数组类型</span><br><span class="line">        - -i 定义整数类型</span><br><span class="line">        - -e export 相同</span><br><span class="line">        - -r readonly类型</span><br><span class="line">    - 注意：</span><br><span class="line">      - 默认字符串类型</span><br><span class="line">      - 默认最多为整型运算</span><br><span class="line"></span><br><span class="line">- 和文件系统程序有关的限制关系：ulimit</span><br><span class="line"></span><br><span class="line">  - 作用</span><br><span class="line">    - 限制开启文件数量，可使用CPU时间</span><br><span class="line">    - 可使用内存总量</span><br><span class="line">  - **参数和语法：**</span><br></pre></td></tr></table></figure>
<p>选项与参数：<br>-H ：hard limit ，严格的设定，必定不能超过这个设定的数值；<br>-S ：soft limit ，警告的设定，可以超过这个设定值，但是若超过则有警告讯息。<br>在设定上，通常 soft 会比 hard 小，举例来说，soft 可设定为 80 而 hard<br>设定为 100，那么你可以使用到 90 (因为没有超过 100)，但介于 80~100 之间时，<br>系统会有警告讯息通知你！<br>-a ：后面不接任何选项与参数，可列出所有的限制额度；<br>-c ：当某些程序发生错误时，系统可能会将该程序在内存中的信息写成文件(除错用)，<br>这种文件就被称为核心文件(core file)。此为限制每个核心文件的最大容量。<br>-f ：此 shell 可以建立的最大文件容量(一般可能设定为 2GB)单位为 Kbytes<br>-d ：程序可使用的最大断裂内存(segment)容量；<br>-l ：可用于锁定 (lock) 的内存量<br>-t ：可使用的最大 CPU 时间 (单位为秒)<br>-u ：单一用户可以使用的最大程序(process)数量</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">  - 如何恢复？</span><br><span class="line">    - 注销再登陆</span><br><span class="line"></span><br><span class="line">- 变量的删除、取代和替换</span><br><span class="line"></span><br><span class="line">  - 变量删除替换</span><br><span class="line"></span><br><span class="line">    - 案例：</span><br></pre></td></tr></table></figure>
<p>${variable#/*local/bin:} }<br>上面的特殊字体部分是关键词！用在这种删除模式所必须存在的</p>
<p>${ variable#/*local/bin:}<br>这就是原本的变量名称，以上面范例二来说，这里就填写 path 这个『变量名称』啦！</p>
<p>${variable# #/*local/bin:}</p>
<h1 id="号的作用"><a href="#号的作用" class="headerlink" title="号的作用"></a>号的作用</h1><p>这是重点！代表『从变量内容的最前面开始向右删除』，<br>且仅删除最短的那个</p>
<p>${variable# /*local/bin:}<br>代表要被删除的部分，由于 # 代表由前面开始删除，所以这里便由开始的 / 写起。<br>需要注意的是，我们还可以透过通配符 * 来取代 0 到无穷多个任意字符<br>以上面范例二的结果来看， path 这个变量被删除的内容如下所示：<br>/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- 简单理解</span><br></pre></td></tr></table></figure>
<p>${variable# #/*local/bin:}</p>
<h1 id="号的作用-1"><a href="#号的作用-1" class="headerlink" title="号的作用"></a>号的作用</h1><p>这是重点！代表『从变量内容的最前面开始向右删除』，<br>且仅删除最短的那个 </p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">  - \# 和 ## 代表如下</span><br><span class="line">    - \# 符合替换字符的【最短的】哪一个</span><br><span class="line">    - \## 符合替换字符最长的哪一个</span><br><span class="line">  - 如何从后面向前面删除内容</span><br><span class="line">    - % 和 %%</span><br><span class="line"></span><br><span class="line">- 替换</span><br><span class="line"></span><br><span class="line">  - 案例</span><br></pre></td></tr></table></figure>
<p>范例六：将 path 的变量内容内的 sbin 取代成大写 SBIN：<br>[dmtsai@study ~]$  echo ${path/sbin/SBIN}</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">- 变量测试和内容替换</span><br><span class="line"></span><br><span class="line">  - 案例</span><br></pre></td></tr></table></figure>
<p>范例一：测试一下是否存在 username 这个变量，若不存在则给予 username 内容为 root<br>[dmtsai@study ~]$  echo ${username}<br>&lt;==由于出现空白，所以 username 可能不存在，也可能是空字符串<br>[dmtsai@study ~]$  username=${username-root}</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">  - 关键点在于 - 号码</span><br><span class="line">  - 后面接变量不存在的替换字符</span><br><span class="line">  - 如果是空字符串也想替换要怎么做</span><br><span class="line">    - :- 前面加上 : 冒号即可</span><br><span class="line"></span><br><span class="line">- 提示变量不存在 ?</span><br><span class="line"></span><br><span class="line">  - 案例</span><br></pre></td></tr></table></figure>
<p>测试：若 str 不存在时，则 var 的测试结果直接显示 “无此变量”<br>[dmtsai@study ~]$  unset str; var=${str? 无 此 变数} }<br>-bash: str: 无此变量 &lt;==因为 str 不存在，所以输出错误讯息</p>
<pre><code></code></pre></li>
</ol>
</li>
<li><p>命名别名和历史命令</p>
<ul>
<li>alias 和 unalias</li>
<li>history<ul>
<li>自行man 查询使用方式</li>
</ul>
</li>
</ul>
</li>
<li><p>bash shell 的操作环境</p>
<ul>
<li>路径和命令的查找顺序（面试终点）<ul>
<li>根据绝对和相对路径查找的命令</li>
<li>由于alias 查找出来的命令</li>
<li>bash 内置的 命令来执行</li>
<li>根据$PATH 环境变量来查找</li>
</ul>
</li>
</ul>
</li>
<li><p>登陆的欢迎信息</p>
<ul>
<li><code>cat /etc/issue</code></li>
<li>cat /etc/issue.net 用于ssh等远程登陆使用的欢迎信息</li>
<li>cat /etc/motd 用于所有登陆用户想要知道的某些信息</li>
</ul>
</li>
<li><p>bash 的环境配置文件</p>
<ul>
<li>login 和 non-login shell<ul>
<li>login shell 取得bash 的时候需要的完整登陆流程</li>
<li>non-login shell: 取得bash 的方法不需要重复登陆的操作</li>
</ul>
</li>
<li>为什么需要最先了解这两个东西<ul>
<li><strong>因为不同的登陆形式获取的shell配置不一样</strong></li>
</ul>
</li>
</ul>
</li>
<li><p>login shell读取的内容</p>
<ul>
<li>/etc/profile 系统整体配置，很脆弱，一旦奔溃恢复比较麻烦<ul>
<li>/etc/profile 的主要内容<ul>
<li>PATH</li>
<li>MAIL</li>
<li>USER</li>
<li>HOSTNAME</li>
<li>HISTSIZE</li>
<li>umask</li>
<li>调用外部文件<ul>
<li>/etc/profile.d/*.sh</li>
<li>/etc/locale.conf</li>
<li>/usr/share/bash-completion/completions/*</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>~/.bash_profile 或者 ~/.bash_login 或者 ~/.profile 用户个人的配置文件</li>
</ul>
</li>
<li><p>读取配置文件的命令 source</p>
<ul>
<li>作用<ul>
<li>当案例需要多个变量环境的时候，很方便的切换变量环境</li>
<li>安装某些软件的时候快速改变环境变量测试是否设置正确</li>
</ul>
</li>
<li>注意点：<ul>
<li>/etc/bashrc (red hat 系统特有)<ul>
<li>作用<ul>
<li>根据不同的UID 设置umask</li>
<li>根据不同UID 设置提示字符</li>
<li>调用 /etc/profile.d/*.sh</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><p>终端环境设置 stty 、 set</p>
<ul>
<li><span class="exturl" data-url="aHR0cHM6Ly9saW51eC5kaWUubmV0L21hbi8xL3N0dHk=" title="https://linux.die.net/man/1/stty">https://linux.die.net/man/1/stty<i class="fa fa-external-link"></i></span></li>
<li><span class="exturl" data-url="aHR0cHM6Ly93d3cuY29tcHV0ZXJob3BlLmNvbS91bml4L3VzdHR5Lmh0bQ==" title="https://www.computerhope.com/unix/ustty.htm">https://www.computerhope.com/unix/ustty.htm<i class="fa fa-external-link"></i></span></li>
</ul>
</li>
</ul>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/kity@2.0.4/dist/kity.min.js"></script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/kityminder-core@1.4.50/dist/kityminder.core.min.js"></script><script defer="true" type="text/javascript" src="https://cdn.jsdelivr.net/npm/hexo-simple-mindmap@0.2.0/dist/mindmap.min.js"></script><link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/hexo-simple-mindmap@0.2.0/dist/mindmap.min.css">
    </div>

    
    
    
        

<div>
<ul class="post-copyright">
  <li class="post-copyright-author">
    <strong>本文作者： </strong>lazytime
  </li>
  <li class="post-copyright-link">
    <strong>本文链接：</strong>
    <a href="https://whitestore.top/2020/07/26/unix1/" title="LINUX鸟哥的私房菜">https://whitestore.top/2020/07/26/unix1/</a>
  </li>
  <li class="post-copyright-license">
    <strong>版权声明： </strong>本博客所有文章除特别声明外，均采用 <span class="exturl" data-url="aHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLzQuMC96aC1DTg=="><i class="fa fa-fw fa-creative-commons"></i>BY-NC</span> 许可协议。转载请注明出处！
  </li>
</ul>
</div>


      <footer class="post-footer">
          <div class="post-tags">
              <a href="/tags/%E6%9C%8D%E5%8A%A1%E7%AB%AF-Linux/" rel="tag"># 服务端-Linux</a>
          </div>

        


        
    <div class="post-nav">
      <div class="post-nav-item">
    <a href="/2020/07/26/springbootpac/" rel="prev" title="Springboot 打包的一些学习">
      <i class="fa fa-chevron-left"></i> Springboot 打包的一些学习
    </a></div>
      <div class="post-nav-item">
    <a href="/2020/07/26/hexoback/" rel="next" title="【Hexo】Hexo 迁移备份">
      【Hexo】Hexo 迁移备份 <i class="fa fa-chevron-right"></i>
    </a></div>
    </div>
      </footer>
    
  </article>
  
  
  



          </div>
          
    <div class="comments" id="valine-comments"></div>

<script>
  window.addEventListener('tabs:register', () => {
    let { activeClass } = CONFIG.comments;
    if (CONFIG.comments.storage) {
      activeClass = localStorage.getItem('comments_active') || activeClass;
    }
    if (activeClass) {
      let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
      if (activeTab) {
        activeTab.click();
      }
    }
  });
  if (CONFIG.comments.storage) {
    window.addEventListener('tabs:click', event => {
      if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
      let commentClass = event.target.classList[1];
      localStorage.setItem('comments_active', commentClass);
    });
  }
</script>

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          文章目录
        </li>
        <li class="sidebar-nav-overview">
          站点概览
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
          <div class="post-toc motion-element"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#《Linux-鸟哥的私房菜》部分笔记："><span class="nav-number">1.</span> <span class="nav-text">《Linux 鸟哥的私房菜》部分笔记：</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#第一章：计算机概论"><span class="nav-number">1.1.</span> <span class="nav-text">第一章：计算机概论</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#第二章：Linux起源"><span class="nav-number">1.2.</span> <span class="nav-text">第二章：Linux起源</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#简答题："><span class="nav-number">1.2.1.</span> <span class="nav-text">简答题：</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#第三章：主观规划与磁盘分区"><span class="nav-number">1.3.</span> <span class="nav-text">第三章：主观规划与磁盘分区</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#四个主分区和一个扩展分区"><span class="nav-number">1.4.</span> <span class="nav-text">四个主分区和一个扩展分区</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#第四章：首次登陆和在线求助"><span class="nav-number">1.5.</span> <span class="nav-text">第四章：首次登陆和在线求助</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#练习题"><span class="nav-number">1.5.1.</span> <span class="nav-text">练习题</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#第五章：文件权限和目录"><span class="nav-number">1.6.</span> <span class="nav-text">第五章：文件权限和目录</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#练习题-1"><span class="nav-number">1.6.1.</span> <span class="nav-text">练习题</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#第六章-Linux文件与目录管理"><span class="nav-number">1.7.</span> <span class="nav-text">第六章 Linux文件与目录管理</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#练习题-2"><span class="nav-number">1.7.1.</span> <span class="nav-text">练习题</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#简答题"><span class="nav-number">1.7.2.</span> <span class="nav-text">简答题</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#第七章-Linux-磁盘和文件系统的管理"><span class="nav-number">1.8.</span> <span class="nav-text">第七章 Linux 磁盘和文件系统的管理</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#所以就是有两颗-CPU-的意思，那就来设定设定我们的-xfs-文件系统格式化参数吧！！"><span class="nav-number">2.</span> <span class="nav-text">所以就是有两颗 CPU 的意思，那就来设定设定我们的 xfs 文件系统格式化参数吧！！</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#可以跟前一个范例对照看看，可以发现-agcount-变成-2-了喔！"><span class="nav-number">3.</span> <span class="nav-text">可以跟前一个范例对照看看，可以发现 agcount 变成 2 了喔！</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#此外，因为已经格式化过一次，因此-mkfs-xfs-可能会出现不给你格式化的警告！因此需要使用-f"><span class="nav-number">4.</span> <span class="nav-text">此外，因为已经格式化过一次，因此 mkfs.xfs 可能会出现不给你格式化的警告！因此需要使用 -f</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#顺利挂载，且容量约为-1G-左右没问题！"><span class="nav-number">5.</span> <span class="nav-text">顺利挂载，且容量约为 1G 左右没问题！</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#怎么会使用掉-100-呢？是啊！因为是-DVD-啊！所以无法再写入了啊！"><span class="nav-number">6.</span> <span class="nav-text">怎么会使用掉 100% 呢？是啊！因为是 DVD 啊！所以无法再写入了啊！</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#内容完全一模一样啊！因为挂载目录的缘故！"><span class="nav-number">7.</span> <span class="nav-text">内容完全一模一样啊！因为挂载目录的缘故！</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#先找一下已经挂载的文件系统，如上所示，特殊字体即为刚刚挂载的装置啰！"><span class="nav-number">8.</span> <span class="nav-text">先找一下已经挂载的文件系统，如上所示，特殊字体即为刚刚挂载的装置啰！</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#基本上，卸除后面接装置或挂载点都可以！不过最后一个-centos-root-由于有其他挂载，"><span class="nav-number">9.</span> <span class="nav-text">基本上，卸除后面接装置或挂载点都可以！不过最后一个 centos-root 由于有其他挂载，</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#因此，该项目一定要使用挂载点来卸除才行！"><span class="nav-number">10.</span> <span class="nav-text">因此，该项目一定要使用挂载点来卸除才行！</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#上面那个-252-与-10-是有意义的，不要随意设定啊！"><span class="nav-number">11.</span> <span class="nav-text">上面那个 252 与 10 是有意义的，不要随意设定啊！</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#注意啊！这个文件可不是一般文件，不可以随便就放在这里！"><span class="nav-number">12.</span> <span class="nav-text">注意啊！这个文件可不是一般文件，不可以随便就放在这里！</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#测试完毕之后请删除这个文件吧！看一下这个文件的类型！是-p-喔！"><span class="nav-number">13.</span> <span class="nav-text">测试完毕之后请删除这个文件吧！看一下这个文件的类型！是 p 喔！^_^</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#号的作用"><span class="nav-number">14.</span> <span class="nav-text">号的作用</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#号的作用-1"><span class="nav-number">15.</span> <span class="nav-text">号的作用</span></a></li></ol></div>
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
  <p class="site-author-name" itemprop="name">阿东</p>
  <div class="site-description" itemprop="description">随遇而安</div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/archives/">
        
          <span class="site-state-item-count">239</span>
          <span class="site-state-item-name">日志</span>
        </a>
      </div>
      <div class="site-state-item site-state-categories">
            <a href="/categories/">
          
        <span class="site-state-item-count">36</span>
        <span class="site-state-item-name">分类</span></a>
      </div>
      <div class="site-state-item site-state-tags">
            <a href="/tags/">
          
        <span class="site-state-item-count">37</span>
        <span class="site-state-item-name">标签</span></a>
      </div>
  </nav>
</div>
  <div class="links-of-author motion-element">
      <span class="links-of-author-item">
        <span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2xhenlUaW1lcw==" title="GitHub → https:&#x2F;&#x2F;github.com&#x2F;lazyTimes"><i class="fa fa-fw fa-github"></i>GitHub</span>
      </span>
      <span class="links-of-author-item">
        <span class="exturl" data-url="bWFpbHRvOjEwOTc0ODM1MDhAcXEuY29t" title="E-Mail → mailto:1097483508@qq.com"><i class="fa fa-fw fa-envelope"></i>E-Mail</span>
      </span>
  </div>


  <div class="links-of-blogroll motion-element">
    <div class="links-of-blogroll-title">
      <i class="fa fa-fw fa-link"></i>
      友情链接
    </div>
    <ul class="links-of-blogroll-list">
        <li class="links-of-blogroll-item">
          <span class="exturl" data-url="aHR0cHM6Ly93d3cuNTJwb2ppZS5jbi9ob21lLnBocD9tb2Q9c3BhY2UmdWlkPTE0OTc3MTgmZG89dGhyZWFkJnZpZXc9bWUmZnJvbT1zcGFjZQ==" title="https:&#x2F;&#x2F;www.52pojie.cn&#x2F;home.php?mod&#x3D;space&amp;uid&#x3D;1497718&amp;do&#x3D;thread&amp;view&#x3D;me&amp;from&#x3D;space">吾爱破解</span>
        </li>
        <li class="links-of-blogroll-item">
          <span class="exturl" data-url="aHR0cHM6Ly9qdWVqaW4uaW0vdXNlci8yOTk5MTIzNDUyNjI2MzY2" title="https:&#x2F;&#x2F;juejin.im&#x2F;user&#x2F;2999123452626366">掘金</span>
        </li>
        <li class="links-of-blogroll-item">
          <span class="exturl" data-url="aHR0cHM6Ly9zZWdtZW50ZmF1bHQuY29tL3UvbGF6eXRpbWVz" title="https:&#x2F;&#x2F;segmentfault.com&#x2F;u&#x2F;lazytimes">思否</span>
        </li>
    </ul>
  </div>

      </div>

      <div class="wechat_OA">
        <span>欢迎关注我的公众号</span>
        <br>
          <!-- 这里添加你的二维码图片 -->
        <img src ="https://adong-picture.oss-cn-shenzhen.aliyuncs.com/adong/wechat_channel.jpg">
      </div>
        <div class="back-to-top motion-element">
          <i class="fa fa-arrow-up"></i>
          <span>0%</span>
        </div>

    </div>
  </aside>
  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

        

<div class="copyright">
  
  &copy; 
  <span itemprop="copyrightYear">2023</span>
  <span class="with-love">
    <i class="fa fa-user"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">阿东</span>
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item-icon">
      <i class="fa fa-area-chart"></i>
    </span>
      <span class="post-meta-item-text">站点总字数：</span>
    <span title="站点总字数">2m</span>
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item-icon">
      <i class="fa fa-coffee"></i>
    </span>
      <span class="post-meta-item-text">站点阅读时长 &asymp;</span>
    <span title="站点阅读时长">29:50</span>
</div>
  <div class="powered-by">由 <span class="exturl theme-link" data-url="aHR0cHM6Ly9oZXhvLmlv">Hexo</span> & <span class="exturl theme-link" data-url="aHR0cHM6Ly90aGVtZS1uZXh0Lm9yZw==">NexT.Gemini</span> 强力驱动
  </div>

        
<div class="busuanzi-count">
  <script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
    <span class="post-meta-item" id="busuanzi_container_site_uv" style="display: none;">
      <span class="post-meta-item-icon">
        <i class="fa fa-user"></i>
      </span>
      <span class="site-uv" title="总访客量">
        <span id="busuanzi_value_site_uv"></span>
      </span>
    </span>
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item" id="busuanzi_container_site_pv" style="display: none;">
      <span class="post-meta-item-icon">
        <i class="fa fa-eye"></i>
      </span>
      <span class="site-pv" title="总访问量">
        <span id="busuanzi_value_site_pv"></span>
      </span>
    </span>
</div>








      </div>
    </footer>
  </div>

  
  <script src="/lib/anime.min.js"></script>
  <script src="//cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js"></script>
  <script src="//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.js"></script>
  <script src="/lib/velocity/velocity.min.js"></script>
  <script src="/lib/velocity/velocity.ui.min.js"></script>

<script src="/js/utils.js"></script>

<script src="/js/motion.js"></script>


<script src="/js/schemes/pisces.js"></script>


<script src="/js/next-boot.js"></script>




  




  
<script src="/js/local-search.js"></script>













  

  


<script>
NexT.utils.loadComments(document.querySelector('#valine-comments'), () => {
  NexT.utils.getScript('//unpkg.com/valine/dist/Valine.min.js', () => {
    var GUEST = ['nick', 'mail', 'link'];
    var guest = 'nick,mail,link';
    guest = guest.split(',').filter(item => {
      return GUEST.includes(item);
    });
    new Valine({
      el         : '#valine-comments',
      verify     : false,
      notify     : true,
      appId      : 'qMUpEEvBgXaMDD1b0ftgi9xr-gzGzoHsz',
      appKey     : 'UCdfT4Rfih6MO6y8DI4fstf6',
      placeholder: "Just go go",
      avatar     : 'mm',
      meta       : guest,
      pageSize   : '10' || 10,
      visitor    : false,
      lang       : 'zh-CN' || 'zh-cn',
      path       : location.pathname,
      recordIP   : false,
      serverURLs : ''
    });
  }, window.Valine);
});
</script>

</body>
</html>
